Momentum 3.x Legacy Changelog from 2009-2010

April 14, 2020 Contributors

Momentum 3.1.0 released on 2010-12-22

  • Feature ticket #2037: Third-party modules that utilize the memalign(3) or posix_memalign(3) memory management APIs on Linux no longer require that Momentum run with the system memory allocator.
  • Feature ticket #2451: Improved efficiency of core hash table implementation. Also added a tunable initial_hash_buckets option with default value appropriate for most customers. Please refer to the support site or contact support for information on tuning this option for your workload.
  • Fixed ticket #2619: Added support for Symantec Brightmail Engine Integration Kit, an in-process implementation of the Brightmail content scanner.
  • Fixed ticket #2894: Resolved an issue where the sieve reject action would incorrectly send an MDN if it was triggered in the rcptto phase
  • Fixed ticket #3172: Thread pool statistics are no longer skewed if the thread pool size is changed without restarting the instance.
  • Fixed ticket #3279: Setting clear_mail_queue_maintainers = true in your configuration file no longer results in system instability. The purpose of setting this to true is to reduce the number of timed events. This can help to reduce the load on the scheduler thread.
  • Fixed ticket #3460: The cluster manager will now clean up stale control cache data from its data store resolving and issue where the control cache would grow unbounded over time, slowly using more disk space.
  • Fixed ticket #3509: Fixed some very minor memory leaks that occurred in error conditions when accessing sqlite databases in the sched module and the ec_dkim_ctl utility.
  • Fixed ticket #4061: Recycled connections could cause hanging connections in rare cases
  • Fixed ticket #4098: Added support for the eXpurgate content scanner from Eleven. (Momentum for Receiving required for AV/AS)
  • Feature ticket #4607: The memory console command output now includes mallinfo() information. Also added xml memory console command that returns memory utilization information in XML form, suitable for machine processing. The peak memory displayed in the memory stats has changed so that it is now sampled twice per second. This change results in reduced contention, improving performance.
  • Feature ticket #4683: Added core_validate_auth hook; this is triggered during SMTP authentication and allows a module to observe the results of authentication attempts.
  • Fixed ticket #4953: Sieve includes are now processed synchronously, just as they were in 2.2. This avoids the possibility of a deadlock that could occur in cases where multiple phases include the same sieve script.
  • Fixed ticket #5205: pe2_logger (a component used only with Message Central) could leak a small amount of memory when rotating through log files
  • Fixed ticket #5268: Improved performance and reliability of ec_rt_stats2 when it is talking to a database across a high latency link, such as a WAN.
  • Fixed ticket #5272: Resolved an issue where the web UI configuration editor would fail to validate configurations that stored lua scripts in the global (shared) configuration repo.
  • Feature ticket #5280: Added lifetime option to the sieve ec_dkim_sign action.
  • Feature ticket #5287: Added Lua msys.db.fetch_row convenience function for issuing a query against a datasource and returning a single row as a one-line action.
  • Feature ticket #5288: Added Lua msys.audit namespace, to expose the audit series capabilities to Lua scripts
  • Feature ticket #5289: Added Lua msys.cidr namespace, to expose CIDR capabilities to Lua scripts
  • Feature ticket #5290: Added Lua msys.gauge_cache namespace, exposing the Gauge Cache functionality to Lua scripts
  • Feature ticket #5292: Expanded the available methods of the validate context object available in Lua. This enables modification of the recipient list, among other things.
  • Feature ticket #5293: Expanded the available methods of the accept construct object in Lua, providing the ability to advertise or suppress SMTP extensions, among other things.
  • Feature ticket #5294: Added msys.validate.dk and msys.validate.dkim functions to Lua to control DomainKeys and DKIM signing and validation in Lua scripts.
  • Feature ticket #5295: Added msys.goodmail functions to Lua, exposing Goodmail imprinting and validation functionality to Lua scripts
  • Feature ticket #5296: Added msys.antivirus functions to Lua, exposing Virus scanning functionality to Lua scripts (Momentum for Receiving required for AV/AS)
  • Feature ticket #5297: Added msys.brightmail.scan function to Lua; this exposes bm_driver functionality to Lua scripts. (Momentum for Receiving required for AV/AS)
  • Feature ticket #5298: Added msys.cloudmark functions to Lua, exposing Cloudmark Authority Engine content scanning functionality to Lua. (Momentum for Receiving required for AV/AS)
  • Feature ticket #5299: Added msys.commtouch functions to Lua, exposing Commtouch content scanning functionality to Lua. (Momentum for Receiving required for AV/AS)
  • Feature ticket #5300: Added msys.base64 and msys.qp functions to Lua, providing base64 and quoted-printable encoding and decoding functionality for Lua
  • Feature ticket #5302: Added msys.bounce.classify to Lua, exposing our bounce classifier functionality to Lua scripts
  • Feature ticket #5308: Added msys.rfc3464 functions to Lua, allowing Lua scripts to create and inspect RFC3464 compliant messages
  • Feature ticket #5317: Added ability to define audit series that are keyed by a string instead of a CIDR. An individual audit series may be keyed by either a string or a CIDR; it may not use both. (Lua only)
  • Fixed ticket #5323: Fixed a minor memory leak in the sieve header comparator when the header being tested is made up of multiple lines.
  • Fixed ticket #5384: Work around a flaw in the Solaris kernel that causes the port_getn() system call to return invalid results in some rare cases.
  • Fixed ticket #5405: Added inbound_audit load console command to the inbound_audit module
  • Fixed ticket #5427: Expanded available CSAPI (Symantec Content Scanning Application Programming Interface) configuration options
  • Fixed ticket #5523: Fixed an issue preventing building of CPAN modules against the msys-perl package due to a missing ccache utility.
  • Fixed ticket #5610: The maximum allowed length of MAIL FROM and RCPT TO commands is now limited to 4k to avoid increased CPU utilization in the face of extremely long command lines. Note that other MTAs enforce smaller limits.
  • Fixed ticket #5650: Expose DKIM verification results via C API
  • Fixed ticket #5652: Added ability to set the permastore_interval to 0 to turn off periodic writes to the permastore layer. The system will update it when the process exits. This facility is responsible for preserving binding statistics and summary data across Momentum process restarts.
  • Fixed ticket #5665: The lua datasource bindings would not reliably execute when used prior to the data_spool validation phase.
  • Fixed ticket #5900: Depending on the ordering of stanzas in your configuration file, you may have seen Unsupported or unknown action commtouch_scan, even though all pertinent modules were specified in the configuration file.
  • Fixed ticket #5909: Cluster shared throttle calculation would incorrectly use a lower rate than was configured in the configuration file.
  • Feature ticket #5930: All content scanning modules now record statistics on scanned, virus and spam volume metrics. These metrics are exposed via the counters subsystem and can be reviewed via ec_console.
  • Fixed ticket #5951: The configuration file parser will now accept port numbers larger than 32767.
  • Fixed ticket #5964: Added ImageAnalyzer image content scanning support. (Momentum for Receiving only)
  • Fixed ticket #6033: Symantec Brightmail (bm_driver) now works with mixed-case domains. (Momentum for Receiving required for AV/AS)
  • Fixed ticket #6040: Improved performance of the ec_cache facility, resulting in improved performance in the configuration system and Adaptive Delivery, among other areas of the product.
  • Fixed ticket #6093: The web UI would not always reflect your pathway filter selection in the Selected Filters bar
  • Fixed ticket #6237: Added Allow_Trailing_Whitespace_In_Commands and Allow_Whitespace_In_Envelope to permit whitespace at end of SMTP commands or in Envelope addresses
  • Fixed ticket #6256: Non-compliant, excessively long SMTP headers could cause excessive CPU usage
  • Fixed ticket #6258: It is now possible to use config reload to cause the cluster manager (eccmgr) process to reload its configuration file. NOTE: No change to the config reload of the Momentum process – this continues to work as before.
  • Feature ticket #6274: Optimizations in the configuration system resulting in improved overall product performance.
  • Fixed ticket #6277: Resolved an issue where under certain circumstances, when using threaded listeners with the Accept_Queue_Backlog set, the system would get out of sync and eventually be unable to accept new mail on that listener.
  • Feature ticket #6312: Synchronized Linux umem implementation with current Solaris sources.
  • Fixed ticket #6316: Improved usability of the Web UI Paths tab. (Momentum for Receiving)
  • Fixed ticket #6324: Resolved an issues where replicated audit_series data would be double-counted each time the configuration was reloaded.
  • Fixed ticket #6325: Resolved an issue where setting ECELERITY_MEMORY=SYSTEM on Linux could result in a crash.
  • Fixed ticket #6342: Fixed and issue where message bodies using quoted-printable encoding could become corrupted when re-encoded as Base64 (e.g. using Disclaimer module)
  • Feature ticket #6406: You may now provision IPv6 listeners. Note that some policy functions (notably CIDR and audit series) will NOP (take no action, report no counts) for messages receiving over IPv6. You may check the recv_via property of a message to determine if it was received over an IPv6 connection.
  • Fixed ticket #6410: Resolved an issue where domains with long-term intermittent DNS resolution failures could be erroneously purged, due to a an internal counter not being reset when a successful DNS lookup for that domain completes.
  • Fixed ticket #6497: Fixed an issue that would cause the eccmgr console to output the results of the threads stats command twice.
  • Fixed ticket #6508: Use of Suppress_spool could cause ecelerity to hang in certain circumstances with large max_resident_messages
  • Feature ticket #6516: MIME parser now utilizes optimized SSE CPU extensions, resulting in improved performance especially with messages larger than 16kb.
  • Fixed ticket #6691: Resolved an issue where under some circumstances lua msg:text() incorrectly returned blank text.
  • Feature ticket #6710: Reduced latency of atomic increment operations in the core Momentum code.
  • Feature ticket #6809: Improved cache sub-system and implemented new cache algorithms resulting in across-the-board product performance improvements and improved cache observability.
  • Fixed ticket #6810: SMF start/stop timeouts are now being respected in the Solaris Momentum start script.
  • Feature ticket #6855: Exposed DNS resolution hooks via C API
  • Fixed ticket #6934: Resolved issue where active and delayed queue graphs displayed inflated counts for zoom levels greater than one hour.
  • Feature ticket #6983: Improved adaptive delivery suspension processing. This results in reduced latency and improved throughput in the presence of suspensions.
  • Fixed ticket #6990: Injecting over 2GB of messages on same connection will no longer trigger message size limit exceeded error.
  • Fixed ticket #7018: A config reload will not cause the adaptive module to purge its caches
  • Fixed ticket #7020: Resolve minor memory leaks on config reload for alerting module cache.
  • Fixed ticket #7051: Resolved a possible fault on Solaris when using the cluster module and initiating a connection to a host with a long name
  • Feature ticket #7112: Add Delayed_Binding_Domain_Fuzz and Adaptive_Retry_Fuzz options to allow greater control over bulk message retries, such as when all messages for a domain have to be retried (e.g. after a suspension has been lifted).
  • Fixed ticket #7129: Adaptive bounce percentage will now only take hard failures and deliveries into account rather than only delivery attempts.
  • Fixed ticket #7144: Fixed issue where FBL module was not writing to the log file under Solaris.
  • Fixed ticket #7168: Improved system performance when blackhole is enabled for a queue that already has messages in it (especially with large queues)
  • Fixed ticket #7464: Added/improved message creation and modification functions available to Lua
  • Feature ticket #7531: Improved spinlock performance. Added reader/writer spinlock API facility.
  • Feature ticket #7565: A config reload will no longer cause datasource caches to be purged.
  • Feature ticket #7646: Added msys.expurgate functions to Lua, exposing Eleven eXpurgate functionality to Lua scripts. (Momentum for Receiving required for AV/AS)
  • Feature ticket #7731: Added a new counter facility that replaced the sieve specific counter facility. There is no visible change to users of the existing sieve counter functionality. The new facility provides a great deal more information and flexibility; consult the manual for more details.
  • Fixed ticket #7732: The Real-time statistics tabulated data on the Web UI dashboard has been renamed to Summary Statistics
  • Fixed ticket #7733: The Active and Delayed queue numbers have been separated out from the Summary Statistics portion of the Web UI dashboard.
  • Feature ticket #7737: The Web UI now includes a Reset Statistics button next to the Summary Statistics information
  • Feature ticket #7742: Momentum may now initiate outbound connections over IPv6
  • Feature ticket #7790: Added msys.counter namespace, exposing the new generic counter facility to Lua scripts.
  • Fixed ticket #7832: Resolved an issue where the Lua msg:routing_domain() function could raise an error when used to set the routing domain for a message.
  • Fixed ticket #7878: Fixed issue preventing the SMTP callback verification module from supporting customizable callback verification domain mapping for the mail from phase.
  • Fixed ticket #7916: the sieve ec_dkim_domains function would omit data for signatures without an i= tag
  • Fixed ticket #7918: Resolved an issue where defining multiple Lua modules that both yield/resume in the data phase could result in a fault.
  • Fixed ticket #7919: Improved perceived performance of the Momentum web UI by adjusting the default Apache configuration
  • Fixed ticket #7923: Nodes could show as offline on the web UI status tab for a few minutes following a change of the administrator password
  • Fixed ticket #7925: The Web UI Paths tab could show inconsistent data between the date range and past few days display. (Momentum for Receiving)
  • Fixed ticket #7927: Momentum would incorrectly determine that a 251 response (user not local) received while delivering to a remote MTA was an error condition
  • Fixed ticket #7939: The Web UI stats tab (which shows mail queue statistics) now shows correct data when filter selection includes bindings that are not configured on some or all of the nodes. (Example: bindings that were present in the past, but have subsequently been removed from the configuration).
  • Fixed ticket #7940: The Web UI is now able to configure the postfix_logger module; previously it had to be configured manually.
  • Fixed ticket #7956: The Web UI now shows current version information on all the nodes, even those that have been upgraded but not passed any traffic since upgrading.
  • Fixed ticket #7961: F-Secure AV is no longer supported in the 3.X receiving bundle.
  • Feature ticket #7968: The support offering of the Momentum product includes the Live Bounce Updates service at no additional cost for 3.X customers with current Support Agreements. Live Bounce Updates is enabled by default when installing Momentum 3.1 or higher when bounce_logger is enabled in ecelerity.conf. See support site for additional configuration options including turning on or off uploading your anonymized bounce data to Message Systems.
  • Fixed ticket #7978: Improved rendering of the Momentum web console for IE7 and IE8 browsers
  • Fixed ticket #7984: Fixed an issue where Web UI Message Size report could understate the maximum message size.
  • Fixed ticket #8003: Changed the default setting of async for Sieve hooks scripts to false
  • Fixed ticket #8010: Resolved an issue where Pathway filter was not properly respected on dashboard.
  • Fixed ticket #8019: Improved Adaptive Delivery rules for yahoo.com, hotmail.com and gmail.com.
  • Fixed ticket #8026: Resolved an issue where the User Administration Credentials sub-tab was not correctly displaying for users that were promoted from a standard user to the admin (super user) group.

Momentum 3.0.28.1 Sending released on 2010-11-03

  • Fixed ticket #7865: Dashboard page summary tables would never display (spinning icon).
  • Fixed ticket #7871: Fixed an issue in handling idle timeouts in the ecmm module. Fixed an issue that limited the maximum message size to 4k when using ecmm.

Momentum 3.0.28 Sending released on 2010-10-18

  • Feature ticket #5436: Increased granularity of graphs on dashboard.
  • Fixed ticket #6934: Resolved issue where active and delayed queue graphs displayed inflated counts for zoom levels greater than one hour.
  • Fixed ticket #6997: Changed the default retention setting for the six hour stats roll-up data from 730 days to 30 days to reduce database size and speed web UI performance. This value can be overridden in the config file.
  • Fixed ticket #7144: Fixed issue where FBL module was not writing to the log file under Solaris.
  • Fixed ticket #7159: Corrected issue where batch and connection ID’s in permfail log did not match other logs for a given message.
  • Fixed ticket #7198: Statp module would not properly populate active and delayed stats when watchlist_only = true.
  • Fixed ticket #7274: Upgraded provided Apache (2.2.16) and PHP (5.2.14) to include upstream security patches.
  • Fixed ticket #7426: Resolved issue editing node-specific config files with webui, including setting EHLO_HOSTNAME for default binding.

Momentum 3.0.26 Sending released on 2010-09-01

  • Feature ticket #6809: Improved cache sub-system and implemented new cache algorithms resulting in across-the-board product performance improvements and improved cache observability.
  • Feature ticket #6983: Improved adaptive delivery suspension processing. This results in reduced latency and improved throughput in the presence of suspensions.
  • Fixed ticket #6990: Injecting over 2GB of messages on same connection will no longer trigger message size limit exceeded error.
  • Fixed ticket #7020: Resolve minor memory leaks on config reload for alerting module cache.
  • Feature ticket #7112: Add Delayed_Binding_Domain_Fuzz and Adaptive_Retry_Fuzz options to allow greater control over bulk message retries, such as when all messages for a domain have to be retried (e.g. after a suspension has been lifted).
  • Fixed ticket #7129: Adaptive bounce percentage will now only take hard failures and deliveries into account rather than only delivery attempts.

Momentum 3.0.24 Sending released on 2010-06-23

  • Feature ticket #5057: Removed unused memory pool API functions from the SDK. These were never implemented and never used.
  • Fixed ticket #5555: It was possible to leak an Event in some rare circumstances
  • Fixed ticket #5679: Possible fault during shutdown after processing an invalid ecelerity.conf file
  • Fixed ticket #5681: Added the net_rawaccess privilege to the default privilege set in the sample ecelerity.conf. This fixes a license validation problem that resulted in an error being logged every 15 minutes on Solaris.
  • Fixed ticket #5691: Using the ec_set_routing_gateway sieve action could result in messages being stuck in the lookuptable and never being delivered.
  • Fixed ticket #5698: Improved performance when determining the value of configuration options that can be set in the Pathway scope and when querying configuration with Seive and Lua.
  • Fixed ticket #5843: Limit the Bounce report to show the top 20 domains to improve the performance of the bounce report, and to avoid overloading the web browser with data.
  • Fixed ticket #5845: Possible deadlock when performing binding group assignments when Adaptive Delivery is configured.
  • Fixed ticket #5886: Improved reliability of Ecelerity::Injector if and when it receives a signal during sending
  • Feature ticket #5927: The product now requires a license file tied to the version and product type. Your license should update automatically as part of starting the service. If you encounter problems with your license file, contact support.
  • Fixed ticket #5966: Miscellaneous performance and general improvements to Adaptive Delivery
  • Fixed ticket #6036: Adaptive Delivery does a better job at recognizing domains that are aliases of other well known domains and will apply shaping and disposition rules more consistently to those domains.
  • Fixed ticket #6042: Reduced lock contention in Adaptive Delivery, resulting in improved performance.
  • Feature ticket #6130: On Linux, the installer now checks the value of SOMAXCONN (max open sockets) and recommends to the user that it be set higher than 1024 for better performance.
  • Fixed ticket #6165: If Adaptive Delivery opts to blackhole mail, this is now shown in the summary report mail
  • Fixed ticket #6167: When Adaptive Delivery suspends a domain, it will now move the mail into the delayed queue to reduce the amount of ongoing maintenance work that the system performs. This results in improved performance in situations where a number of binding-domains are suspended.
  • Fixed ticket #6173: Increase named_throttles default cache size to 1000, since Adaptive Delivery makes such heavy use of throttles. Depending on site, this value may need to be much higher. Set using global config option siv_throttle_cache_size
  • Feature ticket #6244: Improved performance of the ec_ptr_array datastructure, used heavily in the configuration system. Results in improved overall product performance.
  • Fixed ticket #6247: The Solaris installer would fail to create multiple subclusters, requiring manual intervention.
  • Fixed ticket #6278: Adaptive Delivery could incorrectly suspend all bindings for a given domain if any one binding exceeded a 10% bounce rate.
  • Fixed ticket #6311: Updated the apache package included with Message Central to version 2.2.15
  • Fixed ticket #6324: Resolved an issues where replicated audit_series data would be double-counted each time the configuration was reloaded.
  • Fixed ticket #6360: Increased the default max_connections setting in our postgres database packaging, improving performance of various database related activities, especially Message Central.
  • Fixed ticket #6368: Resolved potential instability when using the cluster module and reloading the configuration file.
  • Fixed ticket #6519: Memory leak when using msys.db datasource functions. If you are using these, you will need to add a require(‘msys.datasource’) line to your lua scripts in addition to the require(‘msys.db’) line.
  • Momentum Receiving 3.0 EA released on 2010-03-15
  • Feature ticket #4299: Audit series now support a serialized flag that can be set when they are created. Serialized audit series are written to disk periodically.
  • Fixed ticket #5242: Resolves javascript error that was causing password changes to be silently discarded.
  • Feature ticket #5318: Audit series data is now persistent. The data is serialized to disk on shutdown and read in on start up.
  • Fixed ticket #5418: The webui would not accept certain characters in any field supporting regular expressions (specifically ‘+’ and ‘/’). There is no workaround for earlier releases.
  • Fixed ticket #5555: It was possible to leak an Event in some rare circumstances
  • Fixed ticket #5619: When the Adaptive Delivery module periodically updates its backing store database, it no longer blocks outgoing connections until the update is complete.
  • Fixed ticket #5621: Improved performance of the statp module. Gathering statistics will no longer perturb the internal mail queue data structures and disk I/O is now performed on a separate thread.
  • Fixed ticket #5681: Added the net_rawaccess privilege to the default privilege set in the sample ecelerity.conf. This fixes a license validation problem that resulted in an error being logged every 15 minutes on Solaris.
  • Feature ticket #5686: New Rejections Report summarizes reasons why messages were rejected (spam, no relay, etc).
  • Fixed ticket #5691: Using the ec_set_routing_gateway sieve action could result in messages being stuck in the lookuptable and never being delivered.
  • Fixed ticket #5698: Improved performance when determining the value of configuration options that can be set in the Pathway scope and when querying configuration with Seive and Lua.
  • Fixed ticket #5700: Using a sieve script that calls the sieve dkim_sign action could result in a fault after a config reload had been processed.
  • Fixed ticket #5722: Fixed a memory type mismatch that could result in a crash when the cluster module is loaded.
  • Fixed ticket #5847: Fix clamav support accidentally broken in 3.0.20.
  • Fixed ticket #5875: Update Lua package to fix obscure mathematical operator precedence bug.

Momentum 3.0.22 released on 2010-03-09

  • Fixed ticket #5385: Using ‘sanitize = no‘ stanza with a custom_logger stanza would not reopen logs after ‘config reload’ was issued. Deleting that stanza entirely works around the problem for earlier releases.
  • Fixed ticket #5418: The webui would not accept certain characters in any field supporting regular expressions (specifically ‘+’ and ‘/’). There is no workaround for earlier releases.
  • Fixed ticket #5543: The MIME parser would not see MIME parts of type message/ in some circumstances, impacting the FBL module when it was used with legacy modules that had run earlier in the validation process.
  • Fixed ticket #5619: When the Adaptive Delivery module periodically updates its backing store database, it no longer blocks outgoing connections until the update is complete.
  • Fixed ticket #5621: Improved performance of the statp module. Gathering statistics will no longer perturb the internal mail queue data structures and disk I/O is now performed on a separate thread.
  • Fixed ticket #5630: Answers to DNS queries larger than the standard UDP DNS packet size could result in a watchdog reset. The behavior of Momentum when a UDP DNS packet contains truncated data is now configurable (either drop the packet or fall back to TCP). The default behavior is to drop truncated packets.
  • Fixed ticket #5647: Database rollup script could fall behind if one or more nodes is behind.
  • Fixed ticket #5668: The Adaptive Delivery module will no longer attempt to suspend domains where the Adaptive_Enabled option is not set to true.
  • Fixed ticket #5669: The Adaptive Delivery summary script will now accept the –bouncelog command line option as the documentation states.
  • Feature ticket #5675: Improve performance by changing internal locking method of various functions.
  • Fixed ticket #5681: Added the net_rawaccess privilege to the default privilege set in the sample ecelerity.conf. This fixes a license validation problem that resulted in an error being logged every 15 minutes on Solaris.
  • Feature ticket #5682: Performance when assigning a message to a binding group with a large number of members has been significantly improved. This affects sieve scripts that use ec_set_binding to do binding assignment where the binding is part of a binding group with a large number of bindings. A workaround for earlier releases is to split up large binding groups into smaller ones.
  • Feature ticket #5683: The amount of time to wait before retrying a failed DNS query now has a random element applied to it in order to avoid overloading the DNS server with a huge number of simultaneous queries.
  • Feature ticket #5699: Max_Timed_Events_Per_Iter (default 1024) is now a configurable limit to the number of time-based events that will be processed by the scheduler before tending to events triggered by network traffic. This prevents network events (e.g. inbound e-mail) from being starved by time-based events (e.g. outbound queue management), which could happen on systems with a very large number of domains. On affected systems, the server will now seem more responsive.
  • Fixed ticket #5700: Using a sieve script that calls the sieve dkim_sign action could result in a fault after a config reload had been processed.
  • Fixed ticket #5722: Fixed a memory type mismatch that could result in a crash when the cluster module is loaded.
  • Fixed ticket #5847: Fix clamav support accidentally broken in 3.0.20.
  • Fixed ticket #5875: Update Lua package to fix obscure mathematical operator precedence bug.
  • Fixed ticket #5876: Resolve possible crash in ecstream when running in a cluster.

Momentum 3.0.21 (Sending) released on 2010-02-04

  • Fixed ticket #5420: Fix memory leak in ec_bag memory type introduced in 3.0.17. Injections using ecstream will not exhibit the leak.

Momentum 3.0.20 (Sending) released on 2010-02-01

  • Feature ticket #3304: A new sieve action (ec_gmsi_sign) has been added, allowing scripts to trigger Goodmail signing of a message.
  • Fixed ticket #4656: ecconfigd could fault when joining a multi subcluster environment where one subcluster was already being managed by a remote ecconfigd.
  • Fixed ticket #4796: Synchronize hooks with config system commits; this prevents the race that caused messages to be DKIM signed multiple times.
  • Feature ticket #5009: Add support for clamav protocol 0.95
  • Feature ticket #5086: The feedback loop module is now capable of processing Hotmail-format FBL messages. Previous versions of Momentum could only process FBL messages in ARF format.
  • Fixed ticket #5111: Enforce required configuration values for GMSI_Imprinter. Releases prior to 3.0.18 could crash if one or more values were missing.
  • Fixed ticket #5147: The web UI was unable to edit configurations that contain a sieve script specifying the ec_bounce_classify sieve action. This was due to the config shim not recognizing ec_bounce_classify as a valid sieve action. A workaround for previous releases is to only use ec_bounce_classify in an include file.
  • Feature ticket #5155: Defer connecting to the Goodmail multiplexor until we have determined whether or not the message needs to be imprinted. In previous releases, the connection to the multiplexor was made before determining whether or not the messaged needed to be imprinted.
  • Fixed ticket #5162: The FBL module now allows @-characters in the user string.
  • Fixed ticket #5175: Improve error handling in ODBC datasource driver.
  • Fixed ticket #5183: The binding delayed and binding summary ec_console commands now use the same method when computing the number of message in the delayed queue. In previous versions of Momentum, the number of messages reported by binding delayed could be higher than the count reported by binding summary in some cases.
  • Feature ticket #5210: The Adaptive Delivery module now includes custom rules to better respond to SMTP error messages from rr.com (Road Runner).
  • Fixed ticket #5222: Automatic license fetch was not downloading a new license until 11:59pm of the day the current license expires, which could lead to Ecelerity failing the license check during the gap. Workaround is to delete/rename the existing license and running /opt/msys/ecelerity/bin/ec_lic_wrapper -f.
  • Feature ticket #5230: Added many lua helper functions.
  • Fixed ticket #5246: Long DKIM identity could cause malformed DKIM signature due to improper wrapping.
  • Fixed ticket #5261: Fixed an issue in the Lua validate_ehlo hook where the EHLO parameter was passed to the hook with embedded nuls. The EHLO parameter is now passed to the hook with a CRLF line ending.
  • Fixed ticket #5270: Antivirus modules would not properly set the xyz_status_info variable in the message vctx for infected files when the av action was set to pass where xyz is the name of the antivirus module.
  • Fixed ticket #5274: The cron job that commits the node’s running config every 5 minutes could accidentally commit outstanding changes in the conf/global directory.
  • Fixed ticket #5285: Listeners defined with duravip_follow would not follow their bindings.
  • Fixed ticket #5334: Running a sieve script in the final_validation hook and attempting to change certain headers (e.g. MAILFROM and ReturnPath) would not update the messages to seedlist. All sieve scripts that alter the message contents/headers must be run during seedlist_generate_seed.
  • Fixed ticket #5338: Statp watchlist was cleared too early under certain circumstances.
  • Fixed ticket #5340: Header names longer than 997 characters could cause crash during spool-out.
  • Fixed ticket #5350: Enhance code scanner to properly generate .ecm files for antivirus/avengine modules.
  • Fixed ticket #5354: Disallow headers without values; correctly handle excessive whitespace in wrapped header values.
  • Fixed ticket #5358: Using ‘commit –add-all’ would not consistently recurse into new directories.
  • Feature ticket #5402: The Adaptive Delivery module will now discard messages that solicit a TS03 reply from yahoo.com instead of retrying them at a later date. This prevents the delayed queue from filling up with messages that will never be accepted.
  • Fixed ticket #5416: Resolve issue under Solaris where multiple interfaces would all display the same MAC address.
  • Fixed ticket #5447: A message of a very specific size and content (final CRLF.CRLF crossing a growbuf boundary) could cause a hang during DATA.
  • Fixed ticket #5475: Add ecgmsmultiplexer to the list of services to start at the end of installer (if goodmail is selected).
  • Fixed ticket #5476: Subcluster names were unintentionally forced to lowercase, which would cause problems if a subcluster was created with the install as mixed case. Earlier releases have to limit subcluster names to lower case.
  • Feature ticket #5544: The pe2_logger module now supports an optional identifier in the VERP address immediately preceding the five hexidecimal numbers. This identifier must include at least one non-hexidecimal character to avoid ambiguity with the fields that follow it. If the new default_ident option is specified in the config file, the identifier will be included in the log file name.
  • Fixed ticket #5561: A use after free bug was present in the scriptlet module which could result in a crash when scriptlets are in use.
  • Fixed ticket #5576: Deleting a directory with eccfg would sometimes offer to add the directory back when using commit.
  • Fixed ticket #5604: The cluster module had a reference counting bug that resulted in the old configuration not being cleaned up when a config reload was performed. As a result, configuration-related resources used by modules were never freed when the configuration included the cluster module.

Momentum 3.0.19 released on 2009-12-14

  • Fixed ticket #5279: Fixed memory leak in the fbl (Feedback Loop) module when the feedback-report message part had multiple occurrences of a header.
  • Fixed ticket #5417: Resolve minor memory leak when certain options are set in an ACL context.

Momentum 3.0.18 released on 2009-11-18

  • Fixed ticket #5352: Use of the lua functions get_mess_recv_via and get_mess_recv_from could cause duplicate messages to be resent after restart in cluster only configurations.

Momentum 3.0.17 released on 2009-11-06

  • Fixed ticket #3360: xml cluster shared list spelled GaugeTable as GuageTable. This has now been corrected.
  • Fixed ticket #4498: Outbound connections could fail to retry secondary MX if initial connection failed during banner.
  • Fixed ticket #4614: Legacy modules could be invoked on messages larger than legacy_message_threshold if the message was swapped out to disk.
  • Fixed ticket #4687: Header modification prior to a MIME parse on a malformed MIME message resulted in a length mismatch when rendering the message, causing it to be rejected. For example, calling ec_header_add before a call to ec_mime_parts would trigger the problem.
  • Feature ticket #4689: Avoid compiler warnings when building modules with pure C++ hooks.
  • Fixed ticket #4760: A syntax error in a dynamically loaded sieve script could result in a memory leak.
  • Feature ticket #4773: The sieve_inc_counter function is now an exported API.
  • Feature ticket #4857: Added a Signing_Stats option that can be set to one of all (the default), global or off to control whether signing stats are recorded per binding, as a global summary summary only, or to disable signing stats metrics. You might consider enabling this option if you have a very large number of bindings and don’t need to track message signing statistics (such as Domain Keys or DKIM) per binding (or even at all).
  • Fixed ticket #4906: Sieve++ action ec_rfc3464_delivery_status did not work correctly in hash mode.
  • Feature ticket #4992: A hook has been added to allow modules to make changes to the message body before delivery.
  • Fixed ticket #4994: The logic in eccfg to determine the preferred config repository has been fixed.
  • Fixed ticket #4995: The alerting module could leak memory of the ec_cache_key and malloc type.
  • Fixed ticket #4996: The ec_rt_stats2 utility will now skip jlog entries that it can tell have been corrupted.
  • Fixed ticket #4997: Fixed a memory leak of the string memory type in the ds_core module when performing a query.
  • Fixed ticket #4998: The installer could be confused and fail if the cluster manager nodename is a substring of one of the MTA nodes nodename.
  • Fixed ticket #5000: Subclusters created via the web UI would have their names forced to lowercase.
  • Fixed ticket #5001: A minor dirent and memory leak on each configuration reload.
  • Feature ticket #5014: Improved memory counter lock performance on non-NUMA systems.
  • Fixed ticket #5036: ec_logger and custom_logger would always log the Pathway Group as default
  • Fixed ticket #5052: Configuring the Outbound_Throttle_Messages or Outbound_Throttle_Connections settings in a Binding default {} stanza would throttle all bindings, as if they had been configured in the global scope instead.
  • Fixed ticket #5059: hash_get and hash_set sieve functions now return an error when passed an argument that is uninitialized or not a hash.
  • Fixed ticket #5076: It is now possible to add options to an empty Datasource stanza in the web UI.
  • Fixed ticket #5082: Potential use of memory after it was freed in the spf module that could result in a failure to expand spf macros under heavy load.
  • Fixed ticket #5084: ec_log_trace could confuse an MTA node with a manager node and analyze the wrong files. Passing –main will force the mainlogs to be used.
  • Fixed ticket #5085: If several bounces of the same type are received within a short period of time, the Adaptive Delivery module could send multiple alerts.
  • Fixed ticket #5087: Adaptive delivery now caches its values and syncs this cache with the database periodically in a different thread instead of updates synchronously. This results in a large speedup on systems with slow I/O subsystems.
  • Fixed ticket #5088: Improve initiate_connection to be protocol-agnostic, return the connection handle and mark the MX as bad when connect() returns ECONNREFUSED or ENETUNREACH. The initiate_connection, initiate_connection_smtp and log_client_connection_failure hook APIs are affected. When we get a ECONNREFUSED or ENETUNREACH error from connect() or when the _handleconnect callback gets an exception, we now try to connect to another MX immediately (provided they are not all marked bad).
  • Fixed ticket #5095: The msys.policyeditor.send_email lua function can now send messages to multiple recipients.
  • Fixed ticket #5099: ec_log_file sieve action did not use the IO wrapper framework in a thread-safe manner. This could result in a crash under load when logging to a jlog via ec_log_file.
  • Fixed ticket #5103: On a very busy systems it is possible for a cache node to be freed while there is still an active reference to it. This can result in a crash with the error MEM-00363: X found vs Y expected where Y is usually 97.
  • Fixed ticket #5108: Disclaimer module could corrupt messages that were received as part of a batch, were MIME singletons and when using additional policy logic in the each_rcpt phase.
  • Fixed ticket #5115: On very busy systems with configurations that make heavy use of the caching infrastructure (such as Adaptive Delivery), it is possible to receive a watchdog reset where the main thread is blocked in the pthread_cond_wait function.
  • Fixed ticket #5121: The bounce_logger module could modify memory after freeing it when receiving an out of band bounce with a bounce class of 70 (transient bounce) or 80 (subscribe request). On a system with high memory utilization, this could corrupt memory in use, potentially causing a crash.
  • Fixed ticket #5122: The adaptive module now supports the Adaptive_Alert_Email_Sender configuration option to specify the sender address of the Adaptive Delivery alert email.
  • Fixed ticket #5124: On Solaris systems, when uninstalling Momentum the crontab entries added by the installer were not correcly removed.
  • Fixed ticket #5127: On Solaris systems, users created as part of the Momentum install now have the correct home directory specified in the password database.
  • Fixed ticket #5135: Fixed active delivery suspensions. Even though an alert fired, the domain was not actually being suspended.
  • Fixed ticket #5137: eccfg status now assumes that you’re interested in the status of the default conf directory, just like the other eccfg sub-commands.
  • Fixed ticket #5138: The eccfg resolve command could emit harmless uninitialized value in string eq notices for certain entries in the config checkout.
  • Fixed ticket #5140: The adaptive modules Debug_Level setting now controls the verbosity of messages logged by Adaptive Delivery.
  • Fixed ticket #5141: Specifying a non-zero binding age results in a time value that newer than the specified number of minutes rather than older.
  • Fixed ticket #5142: Add –delete-all switch to eccfg commit. If any files/directories have been deleted using filesystem tools, the user will be prompted to deal with them during commit.
  • Fixed ticket #5143: Fixed handling of invalid flags during command line argument processing.
  • Fixed ticket #5150: The reference count for some lua threads would never reach zero, preventing memory and message references held by those threads from being freed. This could result in some messages being redelivered multiple times.
  • Fixed ticket #5151: A cron job to save the running config could fail if any unknown files or directories exist in the main conf/ directory. This would leave conf?????? directories behind in the …/etc directory.
  • Feature ticket #5152: The memory console command will now accept a memory type name as an argument in addition to a memory type number.
  • Fixed ticket #5157: Sending email to domains that had broken DNS (for example, a CNAME resolving to a CNAME) could result in an active queue which would not expire.
  • Fixed ticket #5174: The postfix logger could truncate the queueid, and fault if it processed a message that had been EM_FAILED_QUIET.
  • Fixed ticket #5187: The alerting module now distinguishes between internally generated bounces and externally generated ones.
  • Fixed ticket #5190: The CSAPI module could leave behind temporary directories in /var/tmp when the server was shut down.
  • Fixed ticket #5193: Configuration options specified in the Esmtp_Listener scope were not taking effect in the Listen scope. A workaround for previous releases is to specify the options directly in the Listen scope.
  • Fixed ticket #5201: Adaptive Delivery will not try to modify settings for suspended bindings.
  • Fixed ticket #5212: Adaptive Delivery alert mail now includes the reason the alert was triggered as well as a rule-specific message (if applicable).
  • Fixed ticket #5216: Messages failing during the initial banner with a DNS record that timed out while being added to the active queue could cause a crash.
  • Fixed ticket #5218: Console commands that produce very large amounts of output could appear to hang after displaying their output while the word completion list was being updated.
  • Fixed ticket #5223: The delete button in the web UI configuration editor has been relocated to prevent users from accidentally losing their modifications when they click near the scroll bar.
  • Fixed ticket #5224: scriptlet memory leak each time a script is loaded
  • Fixed ticket #5227: Fixed a memory leak in the ds_core module.
  • Fixed ticket #5229: Sieve address :detail would actually return :all instead.
  • Fixed ticket #5231: Fixed a LUA runtime error when using the Automated Alerting Configuration in the web console.
  • Fixed ticket #5235: The Web UI graphs could show little or no activity in certain cases even when there was data that should have been graphed.
  • Fixed ticket #5243: If multiple subclusters were added during install, it was impossible to continue if a subcluster was added in error.
  • Fixed ticket #5251: The seedlist module can perform more database queries that it needs to in a clustered environment. This could result in a large number of failed inserts in the postgres log.
  • Fixed ticket #5262: ec_vprintf and related functions now correctly handle format strings with multibyte UTF-8 characters
  • Fixed ticket #5266: Complex regex_binding rules were not handled correctly by the migration script when upgrading from 2.2.
  • Fixed ticket #5281: Update to latest Apache/apr/apr-util packages.
  • Fixed ticket #5319: Improved performance under load when a large number of messages are being signed with DKIM/domainkeys. Previous releases can achieve a similar performance boost by setting the SSL_Lock_Method option to mutex.

Momentum 3.0.16 released on 2009-09-18

  • Feature ticket #4764: Update PostgreSQL to 8.3.7 (with replication support)
  • Fixed ticket #4828: STARTTLS could leak memory allocated to X509 peer certificate.
  • Fixed ticket #4904: ds_fetch from LDAP datasource could fault if ldap_get_values() returned NULL
  • Feature ticket #5006: Update PHP to version 5.2.10
  • Fixed ticket #5021: Fix an error causing the configuration snippet page not to load.
  • Fixed ticket #5065: Cluster logging could have random directory names in some circumstances.
  • Fixed ticket #5066: Fix an issue in which the deliveries reporting page could report inaccurate statistics on message size.
  • Fixed ticket #5070: PHP on Solaris requires an explicit dependency on msys-libxslt
  • Fixed ticket #5071: Service accounts created on Solaris during installation were configured in a way that prevented cron jobs from executing. The accounts can be adjusted by executing passwd -N ecuser.
  • Fixed ticket #5106: Some graphs were not displaying data from all bindings.
  • Fixed ticket #5118: ec_rotate cron job would not get added on Solaris

Momentum 3.0.15 released on 2009-08-10

  • Fixed ticket #4694: The web UI advanced config editor would throw an error when clearing all contents of an array-type option and then clicking the Update button.
  • Fixed ticket #4705: Users assigned to the admin group of the web interface were unable to create or modify existing users.
  • Fixed ticket #4706: When adding a user within the web interface, if the new username was a substring of (contained within) another existing username in the list of users, then the new user would not appear immediately in the user list.
  • Fixed ticket #4766: Cluster status page in the web UI would show a node as Offline if that node was de-selected from the filters list.
  • Fixed ticket #4767: ec_rt_stats2 may hang while attempting to connect to the database if the database is restarted at just the wrong time. This could lead to graph data not appearing in the web UI. Enabled a connection timeout to prevent this from happening.
  • Fixed ticket #4808: Installer now decouples ‘web’ and ‘database’ roles so you may install a dedicated database server. It is important that the database server be completely installed first, before any other server is configured (e.g. manager).
  • Feature ticket #4811: Add timestamp to the installer generated install.log filename so multiple installs/uninstalls in the same directory retain the previous log file. If you are experiencing installation issues, our support associates would love to have copies of all of those installer log files to aid in their diagnosis.
  • Fixed ticket #4817: The eccfg command did not properly time out connections to the message bus in the event that the message bus daemon was unreachable.
  • Fixed ticket #4837: eccfg did not run post-checkout action scripts as root, which meant that changes to mbus.conf would not be picked up by the node without manually restarting the mbus daemon.
  • Feature ticket #4845: Improved graph database performance by adding a number of indices to the schema.
  • Fixed ticket #4848: Apache log files (from both the web UI and ecconfigd) were not being rotated. This is now handled by ec_rotate.
  • Fixed ticket #4850: eccmgr could get overwhelmed with log move jobs if it had been down for an extended period of time. It will now back off on log move processing if the number of outstanding jobs exceeds 64k, putting the log move session(s) on hold for 5 seconds. You may alter the backlog by defining a log_job ThreadPool stanza in eccluster.conf and setting the backlog in there.
  • Fixed ticket #4853: A binding listed in the signing_stats::binding permastore database table that was not present in the current configuration could result in a crash. This could occur if you removed a binding from your configuration and restarted the ecelerity process. A workaround is to manually delete either the offending row(s) from the MasterDB_File, or just to delete the MasterDB_File itself.
  • Fixed ticket #4860: High-throughput connections to the ECStream listener port could prevent Momentum from servicing other listener connections. The symptoms exhibited include unresponsive ec_console and SMTP connections. If you are experiencing this issue, you should consider setting ECStream { ECStream_Max_Batch_Size = 10 } to reduce the number of messages that will be processed at one time by the ecstream listener.
  • Fixed ticket #4861: The lock used to protect the master list of caches has been changed from a spinlock to a mutex. This improves concurrency when the lock is held, such as when the ec_console cache commands are run.
  • Fixed ticket #4862: The seedlist module would copy the envelope from address of the seed triggering message, which could present problems for VERP based bounce processing. The seedlist module now offers a mail_from option that allows you to override the envelope from address of generated seed messages. A seedlist_generate_seed hook is also available to allow custom processing of the seed message prior to injection into the queue subsystem.
  • Fixed ticket #4866: Suppress spurious error message about a missing database name during upgrade. The error message can be safely ignored.
  • Fixed ticket #4867: Rollback in the web UI could leave your web UI session with an invalid checkout and prevent you from doing any further useful work until you log out of the UI and back in again.
  • Fixed ticket #4868: For the SMTP_Extensions option of the ESMTP listener, if the same extension was to be advertised with multiple arguments, only the first one would appear (e.g. configuring AUTH PLAIN and AUTH LOGIN would only advertise AUTH PLAIN). Also, extensions with no arguments (e.g. ENHANCEDSTATUSCODES) would be advertised with an extra space before the end of the SMTP response line.
  • Fixed ticket #4870: A cron job that saves the running config could leave orphaned transactions in the config repo, which could prevent other changes from being committed if left unaddressed. Any orphaned transaction files will be deleted upon updating to 3.0.15 or later.
  • Fixed ticket #4876: Disclaimer module could add disclaimer to certain non-text attachments due to improper headers generated by Apple Mail.
  • Fixed ticket #4877: In the Web UI, the Queues tab on Domain pages failed to display data when the binding filter was implicitly set to all bindings.
  • Fixed ticket #4881: The Contains string operator in the Momentum web UI policy editor did not perform a simple substring search. Instead, the search string was interpreted as a Lua pattern, in which certain characters have special meaning. This could result in the operator failing to match when it should.
  • Fixed ticket #4882: Bounce reasons that violate the SMTP specification by including 8-bit characters would cause the bounce reporting section of the web UI to not show the offending data. The web UI will now translate those characters into ‘?’ symbols, as the SMTP specification does not provide a way to divine the appropriate character encoding for 8-bit SMTP responses.
  • Fixed ticket #4883: A cluster node may stop listening on port 4802 after a config reload, which will prevent the cluster manager from collecting logs from the node and will also prevent messages from being moved to the node. A workaround is to restart the node. When upgrading to 3.0.15, you should upgrade the manager first; the installer will make a change to your ecelerity-cluster.conf file, removing the cluster_listener line and adding an ECCluster_Listener stanza. Consult the sample-configs/ecelerity-cluster.conf file for an example of how this should look. You will not be able to start the ecelerity process if you do not update your configuration (or let the installer update it for you).
  • Fixed ticket #4884: Assigning a variable to the result of a function in the Policy Editor could sometimes show up as an undefined entry when the script was opened up for editing, after it had been saved.
  • Feature ticket #4885: The atomic increment, decrement and addition functions for x86 CPUs are now implemented in a more efficient and NUMA-friendly manner.
  • Feature ticket #4886: The ec_rt_stats2 script will now distinguish between no data and not enough data in verbose mode. This makes it easier to debug situations where ec_rt_stats2 is not moving data from the jlogs into postgres.
  • Fixed ticket #4889: The rt_stats_watchlist_only variable in ec_rotate.conf did not enable the watchlist_only behavior in ec_rt_stats2. A workaround for Momentum 3.0.13.0 is to add the -W flag to the ec_rt_stats2 cron job.
  • Fixed ticket #4890: Domains with no statistical data are no longer stored in the database used by the graphs in the web UI. This may significantly reduce ongoing database disk consumption.
  • Fixed ticket #4891: The cron job that rolls up statistics used by the web UI now performs its actions on each cluster node concurrently instead of serially. This can significantly speed up its operation when there are multiple nodes.
  • Fixed ticket #4892: Added the ability to configure the retention time for the data used to drive the web UI graphs. This is configured via ec_rotate.conf on the database node. Consult the documentation for ec_rotate.conf and rollup for more details.
  • Fixed ticket #4894: The ec_rt_stats2 and rollup scripts now accept the –help and –man options to display the help message and manual page respectively.
  • Fixed ticket #4896: A missing uri in a Datasource stanza would cause a fault on startup. The workaround is to correctly configure the Datasource stanza with an uri.
  • Fixed ticket #4899: The Contains string operator in the Momentum web UI policy editor did not perform argument validation. If either the string to be searched or the substring to search for were nil, the scriptlet would fail, logging an error to the paniclog.
  • Fixed ticket #4908: Invalid login credentials could cause an infinite redirect loop in the web interface.
  • Fixed ticket #4910: When using the Policy Editor web UI to define rules for the validate_data and validate_data_spool_each_rcpt phase, it would not generate valid return values and instead cause incoming mail to be transiently rejected.
  • Fixed ticket #4911: Systems with a large IO pool may run into an issue whereby ecelerity maintains many idle connections to the datasource(s) that are in use, which can potentially starve other machines of connections. You may now specify the thread pool that is used to dispatch datasource queries on a per Datasource basis, so that you can configure the datasource thread pool size independently from the IO pool size. If unspecified, the system will use the IO pool.
  • Feature ticket #4913: The Filter menu in the web UI now provides Select All and Deselect All buttons to make it easier to operate on large sets of bindings.
  • Fixed ticket #4916: Log file corruption might occur if using the customer logger with a concurrency value greater than 1 under load. This would impact the log file associated with the customer logger in question.
  • Fixed ticket #4917: The Matches and Doesn't Match functions in the web UI Policy Editor don’t properly match data.
  • Fixed ticket #4922: The Configuration Snippets section of the web UI was not displayed in non-cluster deployments
  • Fixed ticket #4927: The Policy Editor web UI could change a top-level ALL into an ANY if the conditional block contained nested conditionals
  • Fixed ticket #4928: Some of the queries that drive the web UI graphs would show inaccurate (zero) results for some time windows. This was a reporting issue only, and is corrected by adding explicit data conversion operations to the affected queries.
  • Fixed ticket #4943: Domain names containing special characters such as ‘[‘ are now quoted properly by the ec_rt_stats2 command when it processes the logs.
  • Fixed ticket #4945: Improved line-by-line read performance for modules using the io_wrapper_read_line() API.
  • Feature ticket #4946: We now include a freetds package in the base install suitable for use with ODBC datasources.
  • Fixed ticket #4950: The maildir module may not initialize successfully on Solaris systems if the setgid bit is set.
  • Fixed ticket #4952: YTD buttons on reports pages now display correct interval
  • Fixed ticket #4956: The Seedlist module leaked ds_core:ecdata_value memory.
  • Fixed ticket #4957: eccfg could leave stray confXXXXXX directories under /opt/msys/ecelerity/etc if a checkout or update operation times out. These directories are safe to remove provided that they are not currently in use.
  • Fixed ticket #4958: We now supervise the ecconfigd daemon process using Gimli, so that it will be respawned automatically if it hangs or dies unexpectedly.
  • Fixed ticket #4960: The set_variable function in the policy editor generated invalid Lua code.
  • Fixed ticket #4961: In the Policy Editor, assigning variables to literal values (as opposed to the result of a function call) may generate invalid Lua code.
  • Fixed ticket #4962: ecconfigd could sometimes exit when processing a subcluster SLAVES command, and this would result in eccfg checkout, update or commit operations failing with either a timeout or a 500 internal server error message.
  • Fixed ticket #4964: The ec_rt_stats2 stats gatherer would refuse to run if ec_rotate.conf was in place and rt_stats_enabled was not explicitly configured.
  • Fixed ticket #4969: The connection liveness test in the postgres datasource driver could block for extended periods of time, instead of timing out and indicating that the connection had died. This condition could only trigger in rare circumstances, and would usually time out much sooner. This has now been changed to time out after a maximum of 25 seconds (but will usually detect a dead connection much sooner).
  • Fixed ticket #4970: A combination of very long lines and non-canonical line endings in messages being passed through an avengine module could lead to increased CPU utilization and a gradual memory leak if the RFC2822 options to fix the line length and line endings were enabled. This would be aggravated if the number of configured threads in the IO pool was very large. The CPU utilization could be avoided by disabling the line ending correction, but this would not resolve the leak associated with the line length correction.
  • Fixed ticket #4973: The web UI did not delete temporary files associated with a login session, which would cause problems in Internet Explorer if the user logged out and logged back in to the system without closing the browser window.
  • Fixed ticket #4976: Eliminated misleading warning message thrown when adding new binary files to the configuration repository using eccfg
  • Fixed ticket #5002: Upgrading a cluster MTA could erroneously install the msys-ecelerity-config-server package, which should only be run on the manager node. MTA nodes that were upgraded to a release older than 3.0.15 should have the msys-ecelerity-config-server uninstalled or at least disabled from starting on reboot.

Momentum 3.0.14 released on 2009-07-15

  • Fixed ticket #4888: The rollup process could fall behind processing due to missing indices on the real time data tables
  • Feature ticket #4897: Temporarily set the stats_producer module’s watchlist_only to true, to workaround an issue with the quantity of data being passed through to the real time graph process. This change will be reversed in an upcoming release.

Momentum 3.0.13 released on 2009-07-02

  • Fixed ticket #4503: The web UI would leave a temporary shim file on disk for each new session and configuration change. These files can be removed manually from /tmp.
  • Fixed ticket #4580: Removing a non-existant SMTP tracer via ec_console would lead to a crash
  • Fixed ticket #4670: Some networks experience difficulties with ARP traffic when using the DuraVIP clustering feature. If you are experiencing ARP related issues, you may now set arp_all_hosts = false in your cluster stanza to limit the scope of the ARP traffic generated by DuraVIP moves.
  • Fixed ticket #4702: The service user ecuser is no longer listed in the web UI, as changes to this user will have an adverse affect on the deployment.
  • Fixed ticket #4707: Expandable items in the Reporting section of the web UI would retain the + expander widget after being expanded. The + is now replaced by a - to indicate that the item is collapsible.
  • Fixed ticket #4715: Added locks around swap-out to prevent race conditions for sites with custom modules that act on messages asynchronously and concurrently with swap-out.
  • Fixed ticket #4776: The instructions on the ‘Create Snippet’ page in the web UI refer to ‘Global snippets’ whereas the dropdowns list ‘General’ snippets. Everything should read as ‘General’, since they may be used anywhere.
  • Fixed ticket #4777: The instructions in the snippet management section of the web UI imply that Domain and Binding snippets may only be used in the scopes the snippets are named after. This is not the case, and the wording has been corrected.
  • Fixed ticket #4780: Improved locking performance when looking up matching scopes (e.g. domains) in the configuration subsystem.
  • Feature ticket #4789: The stats_producer module and the ec_rt_stats2 script no longer use the watchlist by default as the watchlist makes it more difficult to track domains with an unexpected number of bounces. Sites with very large numbers of bindings and a highly contended disk subsystem should consider enabling the watchlist_only setting in the stats_producer module, and perhaps also in the ec_rotate_conf configuration file.
  • Fixed ticket #4792: There were two problems when the RFC2822_Lone_LF_in_Body option was set to fix. Firstly, lines with a single dot (‘.’) followed by a non-canonical newline were not properly dot-stuffed. Secondly, if DKIM was enabled, the resulting DKIM signature would be invalid. A workaround for previous releases is to leave the RFC2822_Lone_LF_in_Body option at its default value, ignore.
  • Fixed ticket #4795: The datasource layer would leak cache statistics during a configuration reload.
  • Fixed ticket #4798: A change in how the memory counters are updated addresses a performance problem on systems with a NUMA architecture.
  • Fixed ticket #4802: The script editor in the UI could fail to add an alerting stanza to the configuration, and this could cause the policy scripts to not be applied to the configuration. The workaround for this was to manually add an empty alerting stanza to the configuration file and commit the change, and then to edit and re-save the policy script in the UI.
  • Feature ticket #4806: Added the DBD::CSV perl module
  • Fixed ticket #4810: Added a workaround for a potential fault when the dnscache DNS server software is being used. We still strongly recommend the use of bind as a local DNS server.
  • Fixed ticket #4814: Periodic and Log-based alerting script editors incorrectly displayed Send an SMTP Trap instead of Send an SNMP Trap. This change is purely cosmetic.
  • Fixed ticket #4815: Version 3.0.12 introduced a regression with the way that delayed queue counters are maintained, resulting in the delayed queue size being reported as much higher than the true count.
  • Fixed ticket #4821: The policy editor in the UI would incorrectly display ALL as the criteria in an if statement when ANY was selected.
  • Fixed ticket #4822: Improved login performance on the web UI.
  • Fixed ticket #4824: Fixed message move in a clustered configuration. The change in #4616 to binding group selection logic resulted in messages being assigned to the default binding group when there were no local, unsuspended bindings when the message should have moved to another cluster node.
  • Fixed ticket #4826: Reduced verbosity in the ecconfigd log file.
  • Fixed ticket #4827: ECStream injectors were not aware that they needed to reconnect in response to a Reconfiguration in progress response from the server, resulting in continual retries that would never succeed being made against the reconfigured server. The server side has been changed to snip ECStream connections when a reload takes place, and this causes ECStream injectors to retry the message on a new connection. A workaround for this issue in earlier releases is to restart the ecelerity process when making configuration changes.
  • Fixed ticket #4831: When using DuraVIP, a possible race condition meant that a config reload taking effect on multiple machines at the same time could cause the nodes to disagree about who owns the bindings. The workaround for this was to broadcast cluster duravip announce view from the manager.
  • Fixed ticket #4832: The web UI inbound connection graph would incorrectly display the peak connection count for any one node in the cluster, rather than the sum of the peak connection counts. This was a reporting issue only; the data in the database was correct.
  • Fixed ticket #4834: The web UI Reporting tab now displays overall delivery statistics and messages size statistics for all domains across the selected set of nodes and bindings. The data was present but not displayed in earlier releases.
  • Fixed ticket #4838: Improved performance of the web UI graphs for sites with large numbers of bindings.
  • Fixed ticket #4840: The postgresql configuration file has been tuned to improve performance of stats gathering and processing required by the web UI.
  • Fixed ticket #4842: The latency stats under Deliveries on the Reporting section of the UI were always recorded as zero, even when there was measurable latency.
  • Fixed ticket #4843: eccfg could not commit changes when made only in the conf/global directory, and would require that you also modify files in the conf directory for the commit to go through.
  • Fixed ticket #4851: The real time statistics rollup processing did not correctly honor the data retention times, leading to unbounded database growth over time. When upgrading the manager to this release, you should plan on the upgrade taking longer than usual while indices are built. Additionally, you should expect the database performance to be reduced for up to several hours after the upgrade takes place while the retention policy is enforced and the database is vacuumed. In a cluster configuration, you should upgrade the manager first. Unless you are using the seedlist functionality in a cluster, the downtime of the manager should not impact service across the cluster–the MTA nodes can continue to run. Once the upgrade has taken place, service can be resumed.

Momentum 3.0.12 released on 2009-06-05

  • Fixed ticket #4034: Possible memory leak when attempting to query a non-existant SQLite database file.
  • Fixed ticket #4576: When using the auth_ds module and a datasource query fails, a 535 Sorry message was returned to the sender instead of a 550 Unexpected auth error.
  • Fixed ticket #4616: Adjusted the binding group selection logic distribute messages evenly amongst the bindings in a group. The selection logic had favored bindings defined towards the end of the binding group over those defined at the beginning.
  • Fixed ticket #4620: cluster message moves would unconditionally rebind messages in the scheduler thread, which could lead to a watchdog kill. If you are experiencing this symptom, you may now set unconditional_rebinding = false in your cluster stanza.
  • Fixed ticket #4645: Messages being moved internally between cluster nodes could end up being delayed beyond their expiration time with the message 451 4.4.1 [internal] No valid hosts (unable to make any connections)
  • Fixed ticket #4684: The installer script, when upgrading, would prompt you to answer questions that it could have inferred from the answers provided on an earlier installation run.
  • Feature ticket #4697: The product name has changed to Momentum, and this has been reflected throughout the web UI and installer with new styling and revised text.
  • Fixed ticket #4711: When deleting files or directories from a configuration checkout, eccfg would not perform the delete from the repository, resulting in the deleted files still being visible in other configuration checkouts.
  • Fixed ticket #4712: ec_rt_stats2 was unable to parse reception lines in the mainlog where either the to or from localparts consisted of a double-quoted string containing ‘@’ characters. If such a message was received, ec_rt_stats2 would fail with An error occured: DBD::Pg::db do failed: ERROR: invalid input syntax for type real resulting in the web console stats not being updated. To better handle this rare case, ec_logger will now backslash-escape ‘@’ and backslash characters that are present in the localpart. The Ecelerity::Log perl class we provide to consume these logs will recognize this and return the original, un-escaped, form to your code.
  • Fixed ticket #4716: The configuration system would return binding names in lower case when resolving a binding id number to its name. This resulted in cluster message moves stalling due to being unable to resolve correct routing information, if you have mixed-case binding names. The workaround is to make your binding names lowercase.
  • Fixed ticket #4726: Packages were built without optimization, resulting in degraded performance.
  • Fixed ticket #4727: Optimized locking in the configuration subsystem for improved performance.
  • Fixed ticket #4729: Adjusted ecstream so that protocol errors are now logged at DINFO level, rather than DDEBUG.
  • Fixed ticket #4731: Debug information about the signing statistics would periodically get printed to the paniclog.
  • Fixed ticket #4735: A crash could occur when a host record is recycled after a message has been received but before the server has finished with the message. This can occur on a heavily loaded server when there is post-reception processing such as 8-bit to 7-bit conversion. Setting Transform_8BITMIME = no is a partial workaround for this issue in prior releases, though this will violate the RFC.
  • Fixed ticket #4738: The system could deadlock when using sieve includes for scripts in the set_binding phase and the sieve cache expires while the IO pool is saturated with asynchronous bounce rendering jobs. In this state, the server is unable to perform binding assignment, and mail is not able to transit the system. This problem can be worked around in prior releases either by setting async_bounce_rendering to false, or re-structuring your policy to avoid using sieve includes, or increasing the cache_life parameter of the sieve module so that included sieve scripts won’t expire from the cache.
  • Fixed ticket #4739: Large messages with 8-bit transfer encoding could become corrupted on delivery when sending to a host that does not advertise support for the 8BITMIME SMTP extension. Setting Transform_8BITMIME = no is a partial workaround for this issue in prior releases, as is increasing your Large_Message_Threshold; the former will violate the RFC, and the latter will result in increased resource consumption while conforming to the RFC.
  • Fixed ticket #4742: Installation would not succeed on centos 4 systems that did not have the system freetds package installed, due to an incorrect dynamic dependency. The workaround for this issue was to install the system freetds package.
  • Fixed ticket #4744: In the web UI Stats tab, cluster message move domains do not link to a valid domain summary page, due to an un-escaped ‘#’ sign.
  • Feature ticket #4746: For standalone installations, configuration changes made by the UI now invoke an explicit eccfg pull. Prior to this change, you would need to wait approximately one minute for the changes to take effect.
  • Fixed ticket #4748: Momentum now issues an eccfg pull when the service starts, to guarantee that it is running with the most up to date configuration. This is behavior that went missing in the transition from 2.2 to 3.0. Prior to this change, the configuration would take approximately 1 minute to be applied.
  • Fixed ticket #4750: Dashboard graphs on a cluster installation may report exaggerated inbound and outbound data, due to a missing clause in the query that drives that graph. The data could appear to be number-of-nodes-in-the-cluster times too large, depending on the timing of message throughput and distribution across the cluster. This was a reporting issue only; the underlying data in the database was not affected.
  • Fixed ticket #4751: Redefining a DuraVIP Bind_address would sometimes not remove the old DuraVIP interface, even after restarting the process.
  • Feature ticket #4753: Lua scripts generated by the policy and/or alerting editors in the web UI now warn that these files are not to be modified by hand, as those changes will be lost when the UI is next used to make configuration changes.
  • Fixed ticket #4754: Certain mbus misconfiguration issues could result the system taking up to 10 minutes to give up and fail to start the ecconfigd service. The workaround was to correct the mbus misconfiguration.
  • Fixed ticket #4757: The advanced configuration editor no longer displays the names of configuration scope instances in upper-case, removing ambiguity for case-sensitive names, such as bindings.
  • Fixed ticket #4758: Systems with a very large number of bindings, under load, could watchdog while generating real time stats data for consumption by the web UI. A workaround is to disable the real time stats gathering, but the result of this is that you would lose the ability to see the graphs in the web UI.
  • Fixed ticket #4761: The User Management section of the web UI would not accept passwords with some special punctuation characters in them.

Delivery Manager 3.0.11 released on 2009-05-12

  • Fixed ticket #4569: Duravip-enabled Bindings in a Binding_Group would be detected as misconfigured even when they were configured properly, and this would prevent ecelerity from starting up.
  • Fixed ticket #4597: Logging into the web UI with no bindings configured would sometimes cause an XML parse error message to be displayed
  • Fixed ticket #4622: The ecxs module compilation tool used ccache, which is not included in the installation bundle, and meant that users would need to modify that script to allow their custom modules to compile.
  • Fixed ticket #4623: ESMTP_Listener AuthDigestMD5Parameters, AuthLoginParameters, AuthPlainParameters and AuthCramMD5Parameters options could not be configured in the Pathway_Group, Pathway, Listen and Peer scopes unless the supporting modules were explicitly loaded in the configuration file.
  • Fixed ticket #4624: The Goodmail Imprinter module was missing its manifest (.ecm) file, and this prevented it from being loaded.
  • Fixed ticket #4625: Bindings in a Binding_Group configured with Duravip_Enable or Duravip_Preference would prevent ecelerity from starting up if those stanzas preceded the cluster module stanza.
  • Fixed ticket #4626: The persist_io module would fault on startup if the persist_path option was not explicitly configured in it.
  • Fixed ticket #4627: The seedlist module did not declare that it requires the datasource subsystem, and this would prevent ecelerity from starting up if the seedlist stanza preceded the Datasource stanza.
  • Fixed ticket #4629: The advanced configuration editor in the web UI would allow you to save a configuration snippet with no name, and this would later cause problems working with the web UI.
  • Feature ticket #4630: Ecconfigd no longer requires fully qualified host name to operate.
  • Fixed ticket #4631: ec_migrate_conf would not correctly translate duravip attributes for Bindings contained inside Binding_Group stanzas.
  • Fixed ticket #4632: Complex, multi-segment, mbus.conf files could confuse the web UI, resulting in it only showing only the nodes from the last segment corresponding to a sub-cluster.
  • Fixed ticket #4633: Migrating large config repositories from 2.2 eccmgr could result in ecconfigd ending up in a conflicted state if you committed changes before the migrated repository had completed its sync.
  • Fixed ticket #4634: The installer now prompts for a netmask for each node being configured in a cluster; previously it would default to /24.
  • Feature ticket #4640: Added RFC2822_Lone_LF_in_Body = ‘fix’ to canonicalize newlines in the message body. Customers who have custom modules that modify ec_message_parser_parameters directly will need to recompile the affected modules.
  • Fixed ticket #4643: eccfg now uses cp instead of pax when making a copy of the existing checkout.
  • Fixed ticket #4646: Make ecconfigd more robust in dealing with momentary Spread problems.
  • Fixed ticket #4649: When configuring a sieve script that uses the ds_fetch action, the web UI Advanced Configuration Editor would display an error, and spurious Unsupported or unknown action ds_fetch errors appear in the paniclog. These error messages were logged by the config_shim component of the web UI and did not impact operation of the MTA, but resulted in a poor user experience in the web UI. These would occur when taking any actions on the web console (even just logging in).
  • Feature ticket #4651: Add swaks – an SMTP testing script – to the main distribution
  • Fixed ticket #4652: The web UI configuration editor could not be used to add new sieve scripts to the configuration. Also improved configuration error reporting in the sieve module.
  • Fixed ticket #4660: The Advanced Config Editor in the web UI would fail to show all available options in a given scope in some situations
  • Fixed ticket #4662: Reports would show no additional data (or uncorrelated data) upon expanding domains or viewing the Transfailures or Bounces tabs on the dashboard if the timezone configuration on the nodes were not all consistent.
  • Fixed ticket #4663: The total number of messages in the delayed queue for a domain was being displayed instead of the per-binding statistics in the output of the mailq command and thus the Stats tabs in the web UI
  • Fixed ticket #4664: The outbound_audit module could free the same memory location twice during a config reload.
  • Fixed ticket #4665: The webui config helper would log heartbeats to the mainlog, rejectlog and bouncelog every time it was run, causing heartbeats to appear more often than configured.
  • Fixed ticket #4668: The cluster module could free the same address twice during a config reload.
  • Fixed ticket #4669: Fixed a race condition during spool import that could prevent the import from completing.
  • Fixed ticket #4671: The installer no longer installs the message bus component for singlenode installs
  • Fixed ticket #4678: Some SuSE 10 systems were unable to initialize the msyspg database without manual intervention.
  • Fixed ticket #4679: The mailq command (which powers the Stats tabs in the web UI) could take a very long time to produce its results on systems with large numbers of bindings, and this could trigger a watchdog kill.
  • Fixed ticket #4680: Sites with large numbers of bindings and a highly contended disk subsystem could fall behind with real-time stats processing. This manifested as high memory usage in the ec_rt_stats2 process and increased disk usage for the associated jlogs. The root of the problem was the amount of data recorded by the statp module, and this has now been adjusted to check the domain watchlist earlier in the stats gathering process.
  • Fixed ticket #4681: The custom_logger %T{0} format printed a trailing decimal point even though the number of decimal places was set to zero