Change Log
GreenArrow v4.340.0
-
Added a new directive http_trusted_proxy_auth_header as an alternative mechanism for authorizing a proxy server for Processing Clicks and Opens Behind a Proxy Server.
-
Fixed an issue where
greenarrow_config reload_postgres
was not properly reloading Postgres configuration.
GreenArrow v4.339.0
-
Added a new directive incoming_smtp_received_header_hide_source to reduce the information about the SMTP message source included in the
Received:
header. -
Studio: When used in combination with PostgreSQL 16, this release can significantly improve segmentation speed through the use of parallel queries.
-
Added the legacy_behavior
no_parallel_query_optimization
to avoid the above optimization. -
SimpleMH and Marketing Studio messages can now be archived at the time of injection using the injected_message_archive directive. This feature requires PostgreSQL 16.
-
Engine UI: Messages archived using injected_message_archive are now visible in “Message Archive” under the “Statistics” menu.
-
Fixed an issue that made
hvmail_check_config
erroneously claim a time synchronization service was not installed.
GreenArrow v4.338.0
-
Added a new directive simplemh_track_per_envelope_recipient to modify how SimpleMH creates messages with multiple envelope recipients.
-
Prior to this release, SimpleMH Bad Address Suppression only applied to messages with a single recipient. Suppression will now consider messages with multiple recipients, and may suppress some or all of those recipients.
-
Starting in GreenArrow v4.333.0, SimpleMH can use a shorter VERP format that keeps the RFC5321.MailFrom address localpart shorter than 64 characters. It accomplishes this by adding additional information required for bounce processing to the
X-Mailer-Info-Extra
header.As a consequence of this, this new VERP format is not compatible with
List-Unsubscribe
, so only thehttps
link is included in that header.This release adds a
no_promote_to_verp_type_10
option to legacy_behavior, reverting to use the longer VERP format that is compatible with addingmailto:
to theList-Unsubscribe
header. -
Corrected an issue in Gmail deferral response message normalization that would prevent them from being grouped in the statistics user interface, making it harder to see frequent deferrals.
-
Corrected an issue with the
systemd-timesyncd
dependency added in v4.337.0 that could result in GreenArrow not starting automatically following a system reboot.
GreenArrow v4.337.0
-
The
greenarrow-support
package now depends onsystemd-timesyncd
on all distributions. This is a change from our previous recommendation in the Installation Guide to use Chrony on RedHat-based installations and ntpd on Debian-based installations. -
The
greenarrow.service
Systemd service now waits for time to synchronize usingsystemd-timesyncd
prior to starting GreenArrow. This eliminates a problem where systems that were slow to synchronize could lead to problematic conditions within GreenArrow. -
Fixed a crash that could occur if a message recipient domain is blank (e.g.
joe-user@
) and those messages are deferred due to throttling. Ordinarily, these messages receive a failure on their first delivery attempt with the messageSorry, address must include host name. (#5.1.3)
.
GreenArrow v4.336.2
- Fixed a deadlock possibility when Pausing Domains that could
lead to stopped functionality until the MTA is restarted with
hvmail_init restart
.
GreenArrow v4.336.1
- Fixed an issue introduced in GreenArrow v4.335.0 that would lead Engine statistics and
delivery_attempt
events to report a message’s final delivery attempt asconnmaxout
instead offailed
if that delivery attempt was throttled. This could cause messages to appear to still be in the queue when they in fact have been removed from the queue.
GreenArrow v4.336.0
-
Studio: Fixed an issue where an invalid subscriber import file could result in an “Internal Error” instead of a proper validation failed message.
-
Studio: Improved language to be less confusing when no autoresponders exist.
-
Fixed an issue that could prevent Pausing Domains from functioning on systems that use a non-UTC system timezone. In some cases, applying the legacy_behavior option
perl_remote_limiter
works to restore operation until you upgrade to this release.
GreenArrow v4.335.0
-
In previous versions, when establishing remote SMTP connections, GreenArrow would always send
HELO
after receiving a non-success response fromEHLO
. GreenArrow will now only tryHELO
if it receives a response of500
(command not recognized). If, for instance, GreenArrow receives421
(service not available), it will disconnect instead of sendingHELO
. -
Fixed an issue with “unlimited” voting when Cooperative Throttling that it would require 2 or more net “votes” to enforce unlimited, instead of a simple majority.
-
Fixed an issue that could lead to deferrals (and eventually failures) on retries with a message
invalid format on multiqueue header
.
GreenArrow v4.334.0
-
Documentation for setting up clusters of GreenArrow Engine MTA nodes.
-
Support for cluster-wide throttle limits, using GreenArrow Proxy as a replacement for HAProxy.
-
The following directives are for configuring usage of GreenArrow Proxy:
-
Speed improvements when running
greenarrow_config reload
with many Incoming Email Domains defined.
GreenArrow v4.333.0
- Sends with a blank SendID now appear in the list of Sends in the GreenArrow Engine UI and API.
- Formerly, these were considered “internal sends” and their visibility was controlled by the hide internal sends setting.
-
Added a new configuration directive auto_list_unsubscribe_header for controlling whether a mail class (if configured through greenarrow.conf) will automatically create a List-Unsubscribe header.
-
GreenArrow can now (optionally) use the
X-Job
header in place ofX-GreenArrow-InstanceID
. This behavior is controlled by process_x_job_header. -
Added a new option to Mail Classes to define how statistics will be grouped in GreenArrow Engine. Prior to this release, SimpleMH grouped statistics by Mail Class and InstanceID using a single SendID format. This format can now be customized at the Mail Class level with Statistic Report Grouping.
-
On existing installations of GreenArrow the upgrade process will will append the following to
greenarrow.conf
configuration. This uses thedefault_statistic_report_grouping_per_instanceid_legacy
option of the legacy_behavior configuration directive to maintain reverse-compatible behavior.general { legacy_behavior default_statistic_report_grouping_per_instanceid_legacy }
If you maintain your
greenarrow.conf
configuration in revision control or publish it to your servers using something like puppet, we recommend adding this to your configuration. -
The mail_class directive now supports
*
to apply defaults to all mail classes when using define_mail_classes_in_config_file. -
The following directives have been added for configuring SimpleMH:
-
The following configuration files have been deprecated in favor of the above directives:
/var/hvmail/control/simplemh-config
/var/hvmail/control/opt.simplemh.redis_num_workers
-
Add additional logging about Engine sign-in attempts to the
/var/hvmail/log/passenger
log. -
Fixed an issue where
greenarrow_config reload
was not properly publishing internal configuration about Incoming Email Domains. - Fixed an issue that would prevent upper-case Engine usernames from authenticating over SMTP.
GreenArrow v4.332.0
-
Add missing dependency to greenarrow-support package for Debian-based operating systems.
-
Update third-party software that ships with GreenArrow:
- Apache from 2.4.58 to 2.4.62
-
Internal optimization to the
/service/hvmail-config-agent
service to skip updating Incoming Email Domain data if define_incoming_email_domains_in_config_file is enabled, because that is done when runninggreenarrow_config reload
.
GreenArrow v4.331.0
-
The
rspawn-limiter
service will now print a more clear error message before exiting if no Default VirtualMTA is configured. -
Studio: Fixed an issue where date-based segmentation would not respect Daylight Saving Time.
-
Studio: Updated the
Received
header added in v4.330.0 to the following format:Received: by return-path-domain.com for <[email protected]>; 26 Aug 2024 12:42:56 +0000 (envelope-from <[email protected]>)
The header is now added directly below the
DKIM-Signature
, instead of below other headers. -
Added directive studio_received_header_domain for setting the first domain (the “by” domain) in the above Received header.
-
Add a missing package dependency on Amazon Linux 2023.
GreenArrow v4.330.0
-
Messages generated by GreenArrow Marketing Studio and the HTTP Submission API will now include a
Received:
header. This is not strictly necessary – but not having this header could impact deliverability under certain circumstances.- Added the
http_submission_api_no_received_header
andstudio_no_received_header
options to legacy_behavior for users that wish to continue with the old behavior.
- Added the
GreenArrow v4.329.0
-
The definition of the 22nd element of the
smtp_timings
array has changed from “Time spent waiting for VirtualMTA throttle availability in the backlog queue” to “Time spent waiting for VirtualMTA throttle availability in the backlog queue and time spent spent making the throttle availability decision.” This means that delivery attempts which do not wait in the backlog queue may now have a non-zero value for this timing element. See the log_smtp_timings configuration directive for more information. -
GreenArrow has a new remote delivery throttling subsystem. This subsystem should be essentially equivalent to the current version, but positions us to make exciting advancements in the near future.
-
If you encounter any problems with remote delivery throttling with this new release, the legacy_behavior directive has an option
perl_remote_limiter
to revert to the old code. If you find you need this option, please contact GreenArrow technical support and let us know the issue you’re having. We’ll be eager to resolve it and get you back on the latest version.
GreenArrow v4.328.0
- Added a new directive fbl_processor_forward_errors_to for forwarding messages received by Spam Complaint Mailboxes that cannot be successfully processed as a spam complaint.
GreenArrow v4.327.0
-
Fixed an issue where changing lets_encrypt_registration_email would result in existing certificates failing to be renewed.
-
Fixed a sign-in redirect loop that would happen when signing into an Engine user that does not have permission to access the user interface.
-
Fixed an issue with
hvmail_disk_space_check
that caused it to consider filesystems that do not report inode usage, leading to an error. -
Fixed an issue that would prevent GreenArrow from restarting when external_metadata_event_tracking_database is configured and define_database_connections_in_config_file is not in use.
GreenArrow v4.326.0
-
The command
greenarrow update upgrade_postgres_95_to_16
will no longer proceed if there are pending updates to be applied viagreenarrow update
. -
Studio: Prevent Suppression Lists from being set to be scoped to a deleted mailing list on the API.
-
Studio: Prevent the Mailing List API from interacting with deleted mailing lists.
-
When configuring IPs Authorized to Relay, the
GREENARROW_MTAID
andGREENARROW_LISTID
settings will still be honored even if the mail class specified inGREENARROW_MAILCLASS
does not exist. -
Studio: Improved support for Microsoft SQL Servers with Remote Lists.
-
Fixed a bug that prevented External Metadata Event Tracking clicks from being processed.
GreenArrow v4.325.0
-
Added a new option External Metadata Event Tracking and updated documentation about Event Tracking Metadata Storage. This option uses an external Postgres server for event tracking metadata, enabling clustered installations to have short click tracking URLs.
- New configuration directives:
- Fixed an issue where the
msgperhour
andmaxconn
settings applied by smtp_match_begin_backoff_mode would be overridden by the values configured on a throttle program.
GreenArrow v4.324.0
-
The commands
greenarrow_config reload
andgreenarrow update
are now more resilient against whatever defaultumask
might be in use on the current system. -
The HTTP Submission API time limiting mechanism has been changed. Previously, a single request could take up to 61 seconds to return a response. With this release, a response will be returned within 31 seconds. This can be tuned per-request using the parameter max_request_time.
-
Added directive bounce_processor_address to enable bounce processing using a regular expression. This is intended for use with bounce mailboxes on domains that are not configured in GreenArrow as an Incoming Email Domain.
-
Fix a deadlock scenario that could occur in conjunction with the ram and bounce queues being full while using the bounce_message_passthrough feature.
-
Fix an issue where Pausing Domains custom messages were not used, always using the default messages instead.
GreenArrow v4.323.0
-
Studio: Added a “Cancel” button to paused Subscriber Exports.
-
The log_header and log_header_remove directives may now be specified within the source context (in addition to the general context).
-
GreenArrow’s disk queue may now be configured with a maximum concurrent connections of up to 400,000 (the maximum was previously 40,000). The number of disk queue concurrent connections to allow is adjusted using the file
/var/hvmail/control/queue.disk.concurrencyremote
. -
GreenArrow’s ram queue may now be configured with a maximum concurrent connections of up to 40,000. This is set using the file
/var/hvmail/control/queue.ram.concurrencyremote
. -
The configuration file
/var/hvmail/control/opt.num_rspawn_processes
is no longer used. -
Added a new option
-fixed-pause-duration
to GreenArrow’s SMTP sink for specifying a fixed delay duration on deferrals and failures (instead of an average delay duration). -
Studio: Update the split testing statistics comparison “Overview” section to show the Unique Complaints and the Unique Unsubscribes next to their associated percentages instead of Total Complaints and Total Unsubscribes.
-
Studio: The
BIMI-Selector
header can now be specified as custom headers at the system, organization, and mailing list levels. This header may also be specified by Special Sending Rules. -
Updated GreenArrow’s SMTP services to use the version of OpenSSL provided by the local operating system, rather than OpenSSL version 1.0.2u. This change affects the list of ciphers supported by the SMTP service.
-
If you’d like to review what changes to supported ciphers you will experience, run the following commands to see the list of supported ciphers in each version (this can be done either before or after upgrading to this release of GreenArrow):
-
/var/hvmail/openssl/bin/openssl ciphers -v
(the ciphers supported by 1.0.2u) -
/usr/bin/openssl ciphers -v
(the ciphers supported by your OS’s OpenSSL)
-
-
This command will show the list of ciphers that were added, and removed, by this change (this can be done either before or after upgrading to this release of GreenArrow):
diff -U0 \ <(/var/hvmail/openssl/bin/openssl ciphers 'ALL:!PSK:!eNULL:!NULL' | sed 's/:/\n/g' | sort) \ <(/usr/bin/openssl ciphers 'ALL:!PSK:!eNULL:!NULL' | sed 's/:/\n/g' | sort) \ | egrep '^[+-][^+-]' | sort
-
Add support for the Ubuntu 24.04 Linux distribution.
-
Added filters
name
,ip
, andhostname
to the IP Addresses API. -
Studio: Custom SQL clauses may now use the value
%%subscribers_table_name%%
to reference the subscriber table in use for the mailing list being queried, instead of needing to determine it manually.
GreenArrow v4.322.0
- Added new options to smtp_pattern for pausing domains based on an SMTP regular expression match:
pause
pause_duration
pause_message
-
Added new directive smtp_match_pause_domain for pausing domains based on an SMTP regular expression match.
-
Added new command greenarrow report paused_domains for examining the list of pauses on the command-line.
-
Added new command greenarrow remove paused_domain for removing a pause.
-
Added new user interface and API for listing or removing paused domains.
-
See Pausing Domains for more information about pausing domains.
-
GreenArrow will now differentiate its “connmaxout” messages to report either
All connection backlog slots full due to max concurrent connections.
orAll connection backlog slots full due to max delivery attempts per hour.
instead of simplyAll connection backlog slots used up for this domain.
. -
Existing installations of GreenArrow will be upgraded with the legacy_behavior
single_connmaxout_message
enabled ingreenarrow.conf
to maintain the previous behavior.general { legacy_behavior single_connmaxout_message }
- The configuration syntax has been updated to combine adjacent strings.
GreenArrow v4.321.0
-
Prior to this release, GreenArrow Studio’s segment SQL queries could sometimes fail to use indexes that were available, leading to slow segmentation. We’ve tuned some PostgreSQL parameters to avoid this situation.
-
Added a legacy_behavior option
studio_default_segment_query_cost
to disable the above behavior and revert to the old PostgreSQL tuning. -
Fixed an user interface error that could occur when searching mail classes.
-
Formerly, GreenArrow’s HTTP server would include Apache, PHP, and OpenSSL version information. This information is now limited to
Server: Apache
. To restore the previous behavior, add the following to your/var/hvmail/control/httpd.custom.conf
:ServerTokens Full
-
Added a missing validation to ensure that the wildcard
*
routing_rule_domain has at least one routing_rule_destination. This could lead to an obscure SQL error when runninggreenarrow_config reload
.
GreenArrow v4.320.0
-
Add configuration directive engine_send_aggregation_limit for modifying the maximum number of sends that Engine’s reporting will aggregate together.
-
Increased the default maximum number of sends that can be aggregated together from 500 to 1000.
-
Updated the
hvmail_snapshot_stats
command to addiotop
and additional information about Studio background job status.
GreenArrow v4.319.0
- Studio: The
CFBL-Address
andCFBL-Feedback-ID
headers can now be specified as custom headers at the system, organization, and mailing list levels. These headers may also be specified by Special Sending Rules.
GreenArrow v4.318.0
-
Added the smtp_source directive that allows specifying the IP address and a hostname together for an ip_address in a single directive. Additionally, the smtp_source directive can be specified multiple times inside of the ip_address context which acts as a short-hand for defining multiple IP addresses that act together as a “pool” and share the same settings.
-
Added new directive redirect_to_virtual_mta for redirecting mail for specific domains in an IP address to a new VirtualMTA.
-
Added new configuration directive remove_header for removing email headers.
- Updated the following directive to also be permitted within the ip_address context:
- Updated the following directives to also be permitted within the domain (within ip_address) context:
- Added new directives within the domain (within ip_address) context:
- The above
pcompat_*
directive changes allow for the following:- This DKIM signing can now be configured based on the IP address / domain used for delivery.
- This DKIM signing is performed during delivery rather than injection.
- A second DKIM signature can be added in this way.
-
Bugfix: GreenArrow v4.264.0 changed the default of dkim_sign_canonicalization_mode to “relaxed”. This change did not apply to signatures re-signed during delivery due to the replace_content_domain directive. With this version, the default of “relaxed” now applies to those signatures. (This bug only effected systems using the replace_content_domain directive.)
- Added a new SimpleMH header X-GreenArrow-Pcompat-DKIM-Disable to disable pcompat_dkim_key DKIM signing on a per-message basis.
GreenArrow v4.317.0
-
Added directive bounce_processor_address to enable bounce processing using a regular expression. This is intended for use with bounce mailboxes on domains that are not configured in GreenArrow as an Incoming Email Domain.
-
Corrected some errors in the Postgres deletion procedure printed by
hvmail_ini_postgres
. -
Update third-party software that ships with GreenArrow:
- PostgreSQL from 16.1 to 16.2
-
Fix support for
hvmail_check_config
on Amazon Linux 2 and Amazon Linux 2023. -
Add search box to Mail Classes user interface.
-
Mail Classes user interface index now includes ListID and URL Domain in addition to the Mail Class name.
GreenArrow v4.316.0
-
Added several new configuration directives for re-assigning a message’s VirtualMTA based on message headers and other message metadata matching a regular expression:
-
Significantly increased the amount of precision that can be specified to routing_rule_destination. This only applies when using define_virtual_mtas_in_config_file.
-
Reduced the CPU utilization of GreenArrow when no license key is configured.
GreenArrow v4.315.0
-
Fixed an issue that could lead
greenarrow update
to prompt for a database password. This command is intended to be completely non-interactive. -
Added a new directive simplemh_compress_links. This directive will cause SimpleMH to compress click and open tracking links before embedding them into the message. When using Stateless Metadata Event Tracking this can serve to significantly reduce link size.
GreenArrow v4.314.0
-
Studio: Improved the error messages returned when scheduling an invalid campaign over the API.
-
Studio: Fixed a bug where deleted Autoresponders would still show up on the “Autoresponder Statistics” page.
-
Added a new option handle_bounce_and_fbl to Mail Classes to allow disabling of Bounce & FBL Handling. This can be controlled via the UI, API, or configuration file (depending on how you use GreenArrow). Disabling Bounce & FBL handling has the following effects for messages on that mail class:
- GreenArrow will not overwrite
MAIL FROM
(RFC5321.MailFrom) address. - GreenArrow will not add the
X-Mailer-Info
norX-Mailer-Info-Extra
headers. - GreenArrow will not add a
mailto:
option to the automatically generatedList-Unsubscribe
header.
- GreenArrow will not overwrite
-
Added a new SimpleMH header X-GreenArrow-HandleBounceAndFbl for controlling whether or not to effect the above behavior on a per-message basis.
-
The Mail Class option
Disable Automatic List-Unsubscribe Header
in the UI is nowAutomatic List-Unsubscribe Header
.The API field continues to be named
disable_auto_list_unsubscribe_header
.
GreenArrow v4.313.0
-
Fixed an issue where an Apache server status page could be accessed without authorization.
-
Studio: Fixed an issue in the Campaigns API where the attributes
url_domain_name
,virtual_mta_name
, andbounce_email_name
were ignored when creating or updating a campaign. -
Studio: Fixed an issue in the Campaigns API where the
bounce_email_id
was not validated to be a valid bound mailbox. This could lead to campaigns being sent with an invalid RFC5321.MailFrom bounce address. The new validation could cause API calls that previously succeeded to fail – this is indicative that you were using a non-bounce mailbox. -
Fixed an “Internal Error” that would be given when attempting to create an additional Engine user with the same email address as an existing user. Instead, this is a well formatted validation error.
GreenArrow v4.312.0
-
Fixed an issue where SMTP connections made through a proxy_server would be reported as
Sorry, I wasn't able to establish an SMTP connection. (#4.4.1)
instead of the message from the remote server if the SMTP greeting is a failure. -
Previously, when connecting through a proxy_server and receiving an error in the SMTP greeting (e.g.
554 No SMTP service
), GreenArrow would try the next MX server. This was in contrast to the behavior when not using proxy_server, where GreenArrow would not continue to the next MX in this case. This release makes proxy_server consistent with non-proxy_server delivery – receiving an error in the SMTP greeting stops the delivery attempt and subsequent MX servers will not be tried. -
Eliminated a defect where some (by default, 1 in 20,000, but this is controlled by simplemh_max_server_requests) SimpleMH SMTP injections would slow handoff times by reloading configuration after the request is received.
-
Add new bounce processor rules.
-
greenarrow update
can no longer be disrupted by user-defined environment variables.
GreenArrow v4.311.0
-
Fixed an issue where
delivery_attempt
events could stop being sent if a logged header (log_header) included non-ASCII Unicode. -
GreenArrow will no longer read the entire message into memory before sending the
DATA
command (unless that message is due to be customized via the replace_content_domain directive). Instead, messages are read as the data is streamed to the remote server. This will reduce memory utilization, particularly on servers that send large messages, at the expense of having more files open concurrently. -
Added a legacy_behavior option
load_message_before_sending_data
to disable the above behavior and revert to loading the entire message before sending theDATA
command. -
Fixed an issue that prevented Postgres 9.5 Docker volumes from being upgraded to versions that support Postgres 16.
GreenArrow v4.310.0
-
Added new configuration directives for controlling the HTTP Submission API processing queue limits.
-
The HTTP Submission API SimpleMH server will now use, by default, at most 2% of system memory (no less than 100mb, and no greater than 1gb) for queueing messages to the processing queue. This can be overridden using the simplemh_processing_queue_max_memory directive.
-
The HTTP Submission API processing queue now defaults to applying back-pressure when there are 1,000 messages waiting to be processed (2x the maximum number of messages that can be injected in a single HTTP request), instead of 2,000 messages (4x the maximum number of messages that can be injected in a single HTTP request). This should result in no observable difference on systems that stay caught up, but may result in back-pressure being applied sooner on systems that are behind.
- Introduced two new directives for tuning GreenArrow CPU and memory utilization.
-
The remote delivery attempt response
550 Requested action not taken: mailbox unavailable\nReject due to policy restrictions.
is now considered bounce code50 - Mail block - General
(other) instead of20 - Temp failure - General
(soft). -
Add support for the Rocky Linux 9 Linux distribution.
- Fixed an issue that caused
greenarrow update
to fail on Docker installations due to a change introduced in v4.306.0.
GreenArrow v4.309.0
-
The DKIM Keys API index now accepts a
domain
to filter the results to only DKIM keys for that domain (case-insensitive). -
Fix an issue where the Postgres data directory would not be automatically created when upgrading to Postgres 16 with the
--no-link
option.
GreenArrow v4.308.0
-
The event_delivery_anonymize_localparts option now by default applies to the
sender
field in addition to theemail
field. This is because GreenArrow’s VERP can contain the recipient email address. Use thedo_not_anonymize_sender_localpart_in_events
option on legacy_behavior to disable this behavior. -
Fixed an issue where the
default
setting for dkim_key defined in the configuration file with define_dkim_keys_in_config_file could be incorrectly disabled. -
Fixed an issue where Incoming Email Domains with underscores would yield errors in the
/service/hvmail-config-agent
service and prevent local domain configuration from updating. -
greenarrow_config reload
will no longer render GreenArrow inoperable when executed in an environment with an unfavorableumask
. -
Fixed an issue wherein the GreenArrow MTA could get stuck if email addresses with unicode in the domain name (this is invalid) were injected into GreenArrow for remote delivery.
-
The HTTP Submission API will no longer accept messages to be delivered to email addresses with improperly formatted domain names (i.e. where the domain is not ASCII). UTF-8 domains should be Punycode encoded prior to injection.
-
The GreenArrow SMTP services will no longer accept email with
RCPT TO
to a domain with non-ASCII characters. UTF-8 domains should be Punycode encoded prior to injection. SuchRCPT TO
domains will receive the response550 recipient domain contains non-ASCII characters (#5.6.7)
. -
Added a new directive event_delivery_anonymize_clicktrackingid for anonymizing the
click_tracking_id
field of events.
GreenArrow v4.307.0
-
Corrected a spurious warning on
greenarrow_config validate
and other GreenArrow commands that the Persistence Path has something wrong with it when it’s in good working order. -
Updated Redis service to automatically clean up file corruption due to improper shutdown of GreenArrow.
-
Studio: Stopped shipping an old and very out-of-date Portuguese translation file.
- If you’re using this file, you should back up
/var/hvmail/studio/config/locales/pt.yml
before upgrading to this version (or newer), then restore that file. GreenArrow will no longer manage this file going forward.
- If you’re using this file, you should back up
-
Fixed a spurious error reported by
greenarrow_status apache_status
. -
Fixed a condition that could lead to errors when
greenarrow update populate_privacy_recent_activities
exits.
GreenArrow v4.306.0
-
Fixed an issue where versions v4.304.0 and beyond could not re-attach to persistence path installations.
-
Fixed error when searching Incoming Email Domains screen with many domains.
GreenArrow v4.305.0
-
Prior to this release, GreenArrow’s incoming SMTP service was noncompliant with RFC5321 Section 4.1.1.4 in allowing
<LF>.<LF>
,<LF>.<CR><LF>
,<CR><LF>.<LF>
, and<CR><LF>.<CR><LF>
to all signify “end of data”. This behavior made GreenArrow vulnerable to SMTP smuggling.Starting with this release, only
<CR><LF>.<CR><LF>
signifies “end of data”.This release also includes
noncompliant_smtp_data_dot
as an option to legacy_behavior to restore the noncompliant behavior.More information about SMTP Smuggling can be found here.
GreenArrow v4.304.0
-
Incorporated
pg_repack
into the GreenArrow package to aid in dealing with bloated Postgres tables. Basic use of this tool is documented on the Troubleshooting Disk Space Issues page. -
Add support for PostgreSQL 16. PostgreSQL 16 comes with performance enhancements that will speed up some parts of GreenArrow. New installations will use PostgreSQL 16 going forward. For existing installations, upgrading to PostgreSQL 16 is optional but recommended.
-
greenarrow update is now the preferred command to execute updates after upgrading GreenArrow to the latest release. The former command
hvmail_migrate migrate
is still supported. -
Add support for the Amazon Linux 2 and Amazon Linux 2023 Linux distributions.
-
Update third-party software that ships with GreenArrow:
- Apache from 2.4.57 to 2.4.58
-
Fixed an error where subscribers with very old custom field dates (e.g.
0000-07-24
) could cause date-based segmentation to fail. -
Added a new interface for Link Replacements. These can be managed via the UI or the API. Link Replacements allow you to modify or expire SimpleMH tracked links after delivery.
-
SimpleMH links may now have a default expiration time, controlled by the simplemh_default_link_expiration directive.
-
SimpleMH links may now include a
data-ga-linkid
attribute. Specifying a LinkID allows you to separately track different instances of the same URL. See SimpleMH Click and Open Tracking for more information. -
SimpleMH links may now include a
data-ga-notrack
attribute. This prevents specific links from being tracked. See SimpleMH Click and Open Tracking for more information. -
Studio: Fixed an issue where a global suppression list that is updated to be a more specific suppression list can continue to affect autoresponder mailings from all organizations.
GreenArrow v4.303.0
- Added a new
envelope_recipients
field to the HTTP Submission API for directly specifying the RFC5321.RcptTo message recipients.
GreenArrow v4.302.0
-
Added new option
skip_mx
to smtp_pattern for skipping MX destinations based on the regular expression matching the remote SMTP server’s final response. -
New directive skip_mx_behavior to customize how MX skipping works.
-
override_smtp_result and the
result=
option on smtp_pattern will no longer changesuccess
totemp_failure
. This change was made to reduce the risk of duplicate deliveries due to configuration. -
Studio 404 and 500 pages will no longer include a login link when on a public-facing URL endpoint (such as when attempting to render a non-existent campaign image name).
-
CSV event logfiles may now be configured to include headers using event_delivery_csv_fields.
-
delivery_attempt
events now includemtaid_id
,mtaid_name
,outmtaid_name
, andsource_ip
.
GreenArrow v4.301.0
-
Fix error when searching on the Incoming Email Domains page when more than 1,000 domains are configured.
-
Studio: Seed emails will no longer encode links with a special
?l=
URL form on systems that have sent more than 1,000 unique links. -
Fixed an issue in Engine’s sends screen where the daylight saving time offset hour may be included when it should not.
GreenArrow v4.300.0
-
Added the configuration directive event_delivery_sql_commit_size which defaults to 100. This change significantly improves the performance of SQL event delivery (no configuration change is needed to take advantage of this improvement).
-
The Delete Campaigns and Templates API is now available without a feature flag. However, only unsent campaigns and templates may be deleted. In order to delete sent campaigns, you must continue to enable the feature flag.
GreenArrow v4.299.0
-
Fixed an issue introduced in v4.294.0 that broke the custom date range filter in Engine’s Sends statistics page.
-
Loosened the validations on Mail Class custom headers to allow any header except
X-Mailer-Info
and mostX-GreenArrow-*
headers. See add_email_headers for more information on what headers are allowed. -
Fixed an issue that caused SimpleMH to kill off child processes, leading to occassional
451 Internal error: Error reading response from internal service. Please try again. (#4.3.0)
errors upon SMTP injection. -
Studio: The Reply-To delivery setting may now include replacement codes, just as the From Name and From Email fields do.
GreenArrow v4.298.1
- Add missing Lite Bounce Processor service files.
GreenArrow v4.298.0
-
Added the Lite Bounce Processor, configured with the following directives:
- lite_bounce_processor_address
- lite_bounce_processor_include_report_text
- lite_bounce_processor_forward_errors_to
- lite_bounce_processor_queue_size_soft
- lite_bounce_processor_queue_size_hard
- lite_fbl_processor_address
- lite_fbl_processor_headers
- lite_fbl_processor_include_report_text
- lite_fbl_processor_forward_errors_to
-
Fix another issue where the disk space used and reported by
hvmail_status status
could be inaccurate. -
Studio: Added two new replacement codes
%%data_current_date_long%%
and%%data_current_date_database%%
.
GreenArrow v4.297.0
-
Fixed an issue where an exact set of circumstances could lead to SimpleMH messages failing with the message
SMTP cannot transfer messages with partial final lines. (#5.6.2)
. -
Studio: Improved handling of non-UTF8 characters in supressed address imports.
GreenArrow v4.296.0
-
Fixed an issue with Studio Subscriber Exports where the first hour of the day (12am) would be blank.
-
Fixed an issue where changing the type of VirtualMTA defined in the config file (for example, converting an IP Address to a Routing Rule) would result in an error when running
greenarrow_config reload
. -
Studio: Increased campaign name maximum length from 150 to 200.
-
Studio: Mailing list names on the mailing list index are now links to the mailing list.
-
Studio: Fixed an issue that could lead to content being interpreted as ISO-8559-1 instead of UTF-8.
-
Fixed an issue where the disk space used and reported by
hvmail_status status
could be inaccurate.
GreenArrow v4.295.0
-
Fixed an issue where the Event Processor was incorrectly sending
is_retry
as an integer (1
or0
) in JSON instead oftrue
orfalse
. This was in contrast to the Legacy Event Processor, which sent this value astrue
orfalse
.If your integration depends on
is_retry
being1
or0
, you can keep this behavior using the legacy_behavior (event_processor_is_retry_as_integer) directive. -
The include directive may now be specified within any context, not only at the top-level of
greenarrow.conf
. -
Single-part messages generated by Studio and the HTTP Submission API now include the
MIME-Version
header.
GreenArrow v4.294.0
-
Update third-party software that ships with GreenArrow:
-
The Studio System Configuration page “Test reCAPTCHA API keys” will now warn you that an invalid key might cause the page to enter an infinite loop. This is due to a bug in Google’s reCAPTCHA JavaScript.
-
The Studio Subscribers API now accepts a
segment_id
parameter for filtering the list of retrieved subscribers to a specific segment. -
Subscriber Export timestamps are now in 24-hour time (they were previously in 12-hour time but with no AM/PM marker).
GreenArrow v4.293.0
-
Fixed an issue where a bounce code of
999
could appear indelivery_attempt
events instead of40
. Events that received a bounce code of999
can be considered equivalent to bounce code40
. -
Add support for the Debian 12 Linux distribution.
-
The backup program
hvmail_unmanged_backup
now usespigz
for compression instead ofgzip
. This causes the backup process to use more available CPUs, reducing the time it takes to complete a backup.
GreenArrow v4.292.0
-
The Studio subscribers and suppressed addresses index APIs both now present the total number of records in its pagination data, in line with other Studio APIs.
-
Fixed a bug that would prevent the
studio_subscriber_created
andstudio_subscriber_updated
events from being delivered by the Legacy Event Processor. -
Fixed a bug wherein running
greenarrow_config reload
could clear the “redirect” setting for IP addresses and relay servers.
GreenArrow v4.291.0
-
The Incoming Email Domains index is now paginated when more than 1,000 domains are configured.
-
The Bounce Address dropdown will no longer cause the Mail Class edit screen or the Incoming Email Domains index to freeze when there are a huge number of bounce mailboxes.
-
Added a configuration directive simplemh_validate_bounce_address to disable SimpleMH bounce address validation. Setting this directive to
no
reverts the Mail Class bounce address configuration to how it was prior to v4.285.0.
GreenArrow v4.290.2
-
Bug fix: Systems that have sent a large number of events (more than 2 billion) will temporarily stop sending events. The events aren’t lost, but will be delayed until this fix is in effect.
-
Bug fix: Beginning with GreenArrow v4.288.0, messages could get stuck in-queue without delivery attempts. This issue is due to a bug in re-reading messages after the disk queue is restarted.
Messages can only enter the stuck state when restarting the disk queue. If you have not restarted the disk queue since upgrading to a version after v4.288.0 (apart from the restart to accomplish the upgrade), you have not been affected.
If you have been affected you will see lines like:
in your2023-07-28 10:24:28.827654500 WARNING: queue_reader: cannot read file in queue (/var/hvmail/qmail-disk/queue/batches/17/275a2954-22dc-c1a1-dab5-d7623a7e09da-m1): error reading message file (/var/hvmail/qmail-disk/queue/batches/17/275a2954-22dc-c1a1-dab5-d7623a7e09da-m1): state self-check failed: message_batch not in normal mode: error in message index 0: error in recipient index 0: LastAttemptOutMtaID is non-zero (873) (State=DoneAndMarked)
/var/hvmail/log/hvmail-disk-qmail-send
logdir directory.Each stuck message batch will generate one log line like the above approximately every 5 minutes.
You can estimate the number of stuck message batches by running this command:
/var/hvmail/bin/logdir_select_time --dir /var/hvmail/log/disk-qmail-send --last '5 min' | grep 'state self-check failed: message_batch not in normal mode: error in message' | grep 'LastAttemptOutMtaID is non-zero' | wc -l
-
We have added a mechanism so that messages that were stuck (due to the above bug), once GreenArrow is updated and they can be processed, if they are older than their queue_lifetime, they will be failed with the error
Message expired. (#5.4.7)
. This only applies to messages that were stuck.
GreenArrow v4.290.1
-
Bug fix: SimpleMH seed list bounces will now correctly write
bounce_all
andbounce_bad_address
events for the seed address, instead of the original recipient address. -
Loosened a Mail Class validation that rejected the System Default bounce address when the System Default was not set.
GreenArrow v4.290.0
-
Delivery attempts that received a non-successful SMTP response from a remote server now include
bounce_code
. This is the bounce code for the SMTP response. This does not apply to the Legacy Event Processor nor the Legacy Delivery Attempt Log. We’ve provided a new configuration directive delivery_attempt_bounce_categorization to disable this behavior. -
Added some clarification to the bounce_processor_rule directive documentation to describe how to write regular expressions based on
delivery_attempt.message
instead ofbounce_all.bounce_text
.
GreenArrow v4.289.0
-
Added new configuration directives that provide a way to specify on a domain context the parameters of Backoff Mode due to a SMTP match (smtp_pattern or smtp_match_begin_backoff_mode).
-
Added new configuration directives:
- smtp_pattern_list lets you create a group of SMTP patterns.
- smtp_pattern lets you define individual SMTP patterns and the action that should be carried out as a result of a match.
- smtp_pattern_list lets you specify a group of SMTP patterns to apply to IP/domain combinations.
- Events can now be written to logfiles in
csv
format. See the following directives: -
Added a new configuration directive create_bounce_messages to disable the creation of bounce messages when delivery of a message permanently fails.
-
Added a new configuration directive bounce_recipients_with_no_mx to bounce messages to recipient email addresses with no
MX
records. -
Added a new bounce code
24
(Temp failure - Missing MX record) that will be generated when a message bounces due to bounce_recipients_with_no_mx. By default, this is treated as a soft bounce. -
Fix an issue where servers with thousands of IP addresses could see odd performance issues on outgoing SMTP delivery.
-
The number of backends allocated to the HTTP Submission API will now dynamically scale with number of CPU cores on the system, if not overrided. This leads to better out-of-the-box performance for HTTP injection, but may lead to higher out-of-the-box memory utilitzation.
- Fixed an issue where
bounce_all
andbounce_bad_address
events would not be created for recipient email addresses containing multiple@
signs.
GreenArrow v4.288.0
- This version includes new ways to see what’s in your disk queue.
-
Added a new GreenArrow command
greenarrow report disk_queue_summary
. - Added a new Disk Queue Summary API.
- Added a new UI in the “Statistics” section called “Disk Queue Summary”.
- In this new reporting, we offer
VirtualMTA (Most Recent)
and grouping the report by the throttling rule used for the most recent delivery attempt. This required new data to be tracked when delivery attempts are made. As such, after upgrading, you may temporarily see(not specified)
listed as theVirtualMTA (Most Recent)
or an incomplete list of domains listed for theThrottle
. This reporting inaccuracy will naturally resolve as delivery attempts are made and the expected data is made available to the report.
-
Added a new GreenArrow command
- Added the following configuration directives to pcompat DKIM signing:
- pcompat_dkim_identity_fallback for adding a fallback signing identity.
- pcompat_dkim_key_list for defining lists of DKIM keys.
-
pcompat_process_x_dkim_options_header for enabling support for the
X-DKIM-Options
header.
- Added a new configuration directive process_x_virtual_mta_header
to optionally support the
X-Virtual-MTA
header.
GreenArrow v4.287.1
-
Fixed an issue with Persistence Path Mode that would cause
hvmail_migrate
to not run all necessary migrations after upgrading. -
Performance optimization within
greenarrow-remote
on servers with lots of IP addresses.
GreenArrow v4.287.0
-
The
X-GreenArrow-*
headers now support header folding. -
The headers logged when Logging all SimpleMH Messages now support header folding.
-
Fixed an issue with
hvmail_update_tcprules
that would prevent SMTP services from working if the user’s shellumask
was unexpected.
GreenArrow v4.286.0
-
Added a new configuration directive log_header_remove to log and remove a header from injected messages.
-
Added a new configuration directive dkim_sign_extra_header to sign headers that aren’t present in the original message (thereby preventing those headers from being forged later). This is called “DKIM Oversigning” and helps to protect against DKIM replay attacks.
GreenArrow v4.285.0
-
The
$CLICKTHROUGH_URL
and$RETURN_PATH_OVERRIDE
SimpleMH configuration variables have been deprecated. In their place, we have added the following:-
Added new screens for viewing/editing the SimpleMH default URL domain and default bounce mailbox.
-
Added a selection list for the Mail Class bounce address
-
Added new configuration directives for setting the SimpleMH default URL domain and default bounce mailbox when configuring via the configuration file.
-
-
Added new configuration directives for writing through a pipe to a forked-off process’ STDIN.
-
Added new configuration directives for writing to SQL database destinations.
-
Added new configuration directives for writing to custom logfiles from the new event processor.
- event_delivery_logfile
- event_delivery_logfile_rotation
- event_delivery_logfile_delete_after_days
- event_delivery_logfile_move_to
- event_delivery_logfile_move_interval
- event_delivery_logfile_max_size
- event_delivery_logfile_world_readable
- event_delivery_logfile_fsync_frequency
- event_delivery_logfile_require_fsync
-
The new event processor introduced in GreenArrow v4.270.0 is now a full replacement for both the legacy event processor and the Delivery Attempt Log. All features of those systems can now be replaced with greenarrow.conf directives.
-
The new event processor (
/service/hvmail-event-processor2
) now runs as the userhvqmaill
by default instead ofroot
. We’ve added the directive event_delivery_run_as_root to override this behavior and cause the new event processor to run asroot
. -
Performance boost to the HTTP Submission API when using gzip compression.
GreenArrow v4.284.0
-
Fixed an issue with bounce processing concurrency when multiple bounces arriving for the same email address / listid combination at the same time, one of them could be skipped in processing. This fix does not apply to GreenArrow installations running Postgres 8.3.
-
Fixed an error on the “View all references” page for throttling templates referenced by many IP addresses.
-
With Google’s transition to Google Analytics 4 (which is replacing Universal Analytics), GreenArrow is phasing out the transmission of campaign renders/opens to Universal Analytics. Existing users will be unaffected for the time being, but be aware that Google is stopping support for Universal Analytics as of July 1, 2023.
-
Mailing lists may now be configured with Google Analytics 4 Measurement IDs (which look like
G-ASDFZXCV
). Clicks will be unaffected by this transition, as the relevantutm_*
parameters are still included if the mailing list is configured with Google Analytics Integration enabled and the campaign has click tracking enabled. -
Studio will now use the System Name (if set) instead of “GreenArrow” when generating the Two-Factor Authentication shared secret.
GreenArrow v4.283.0
-
hvmail_init status
will now provide more helpful information if your license key is not in good standing. -
greenarrow info
now also includes the version date in addition to the version number. This is the date that GreenArrow uses to decide whether or not the installed version exceeds the configured license key’sLicense Key: Updates Expiration
. This will always be before or equal to the release date found in this changelog. -
greenarrow info
will now warn you if you’re running a version of GreenArrow that exceeds yourLicense Key: Updates Expiration
. -
Fixed an issue that could lead to Redis memory utilization bloating if Studio click & open requests arrive and Studio is not licensed.
-
Studio: Number custom fields now support an option to enable decimals in these custom fields. The default remains that these field values must be whole integers.
-
Added a new option to
greenarrow init
--admin-password-prompt
to force a prompt for entering the user password. This helps avoid your password going into your shell history. -
Fixed an issue where messages without a body were not DKIM signed.
-
Reduced HTTP server KeepAliveTimeout from 5s to 1s. This helps to reduce the Apache server utilization on servers with a high volume of click and open tracking traffic.
-
Updated the
.greenarrow_web_form
CSS class in Studio web forms to be.mailer_web_form
to aid whitelabeled installations. -
The
bounce_bad_addresses
table now includesclick_tracking_id
. -
Fixed an error presented when attempting to create a subscriber import with no file specified (this should be a validation error, but was instead an Internal Error error page).
GreenArrow v4.282.0
-
Added a new GreenArrow command
greenarrow init
. This command is used to initialize new installations in the updated Installation Guide and replaces several steps of the install procedure. -
Added a new way to run GreenArrow called Persistence Path Mode which is covered in the updated Installation Guide. Traditional Mode is the well-established way to run GreenArrow.
-
Clarified in the Installation Guide that Docker is a supported way to run GreenArrow.
-
Added a new GreenArrow command
greenarrow info
for printing details about this installation of GreenArrow such as version number, persistence mode, and license key expiration. -
Tweak definition of 21st field of log_smtp_timings to be more clear and accurate. Fixes an issue where the 1st field could be negative.
-
Recategorized some
x.4.1
bounces that could be considered hard bounces as soft bounces. -
Restored support for remote delivery to mail exchangers that support only TLS 1.0.
-
Mail class names may now be up to 64 characters in length. Please see the Bounce Processor Concepts documentation for caveats regarding long mail class names.
-
Update third-party software that ships with GreenArrow:
- Apache from 2.4.52 to 2.4.56
GreenArrow v4.281.0
-
Engine: Added a new option to SimpleMH Mail Classes to be able to disable the List-Unsubscribe header that is usually automatically added.
-
Engine: Added a new SimpleMH header
X-GreenArrow-Disable-Auto-List-Unsubscribe-Header
for disabling per-message the List-Unsubscribe header that is usually automatically added.
GreenArrow v4.280.0
-
log_smtp_timings now includes time spent waiting for VirtualMTA throttle availability in the backlog queue.
-
Fixed an issue where
greenarrow remote_connections
could sometimes show saved connections that are being used as stillsaved_for_reuse
. -
Studio: Fixed an issue where some valid UTF-8 files would fail import validation.
GreenArrow v4.279.0
-
Added a new SMTP logging option log_smtp_timings.
-
Delivery attempt events will now include the message size in bytes (if loaded).
-
Delivery attempt events may now include SMTP timing in nanoseconds (if log_smtp_timings is enabled).
-
The Remote Delivery Status Log now includes average message sizes.
-
Fixed an issue in
hvmail_unmanaged_backup
where an error could be reported ifrpm
is installed on a Debian or Ubuntu system. This error did not affect backup taken.
GreenArrow v4.278.0
-
Fixed an issue where only half of the legacy event processor would use CPU resources when concurrency was in use.
-
Fixed an issue where
bounce_bad_address
events generated by the repeat bounce counting system would not include the most recent bounce’sclick_tracking_id
value (instead it would benull
). -
Fixed an issue where the retry_time_randomize and extra_delivery_attempts_after_conmmaxout were not working correctly when configured within the virtual_mta_injected directive.
-
Studio: Speed up subscriber import creation by deferring file encoding validation for files larger than 1MB. Deferred validation means that a bad import file may fail after it has been scheduled.
-
Add new bounce processor rules.
-
Engine UI: Fixed an error where multiple “invalid sign-in” messages could appear when sign-in fails.
-
Studio: Fixed a graphical error in an organization’s “Invalid Selections” table.
-
greenarrow_config reload
andgreenarrow_config validate
will now warn if the kernel parameternet.core.somaxconn
is too low for the requested SMTP concurrency. -
Added a new command
greenarrow config recommend_sysctl
that will print recommended sysctl settings, including the recommended value fornet.core.somaxconn
.
GreenArrow v4.277.0
-
Fixed an issue wherein a broken
pipe_command
configured in the Delivery Attempt Log could lead to long-running transaction locks being held (which in turn could causehvmail_migrate migrate
to fail after upgrades). -
Studio: Fixed an issue that could result in campaigns failing if a subscriber included in that campaign is deleted while the campaign is sending.
-
Fixed an error reported by
greenarrow_blockers
if rpm was installed on a Debian-based operating system. -
Studio: The “DEACTIVATE SUBSCRIBERS NOT IN IMPORT” option on subscriber imports is now protected behind a confirmation dialog to prevent users from accidentally enabling this dangerous feature.
-
Engine API: Added a new API for pausing and dumping send queues.
GreenArrow v4.276.0
-
GreenArrow will now more quickly retry messages that are deferred due to
connmaxout
(i.e. delivery attempts that are throttled). This behavior can be tuned with the new extra_delivery_attempts_after_conmmaxout configuration directive. -
GreenArrow will now schedule a message’s next delivery attempt based on the current time, rather than the time the previous delivery attempt started.
-
The disk queue can now have its own (optional) backlog setting.
-
Added new configuration directive for applying some randomization to custom retry schedules.
GreenArrow v4.275.0
- Added new configuration directives for filtering events by mail class or listid when delivering events using the new Event Processor.
-
Fixed an issue in the Engine UI where sometimes attempting to delete a record (for example a DKIM Key) could lead to an error instead of successful deletion.
-
Fixed an issue in the legacy event processor where non-legacy events can be written to logfiles (as written by the logfile configuration option in the legacy event processor).
-
Fixed an error emitted by
greenarrow_config reload
that could occur when defining Engine configuration objects in the configuration file. -
Studio: The subscriber import view page now indicates whether or not the “Deactivate Subscribers Not In Import” setting was used for this import.
-
Fixed the HTTP Submission API to properly wrap base64 encoded attachments in the generated message.
- Optimize Engine API call authorization speed when using legacy Engine users.
GreenArrow v4.274.3
- Fixed presentation of IP Addresses with more than 100 IPs.
GreenArrow v4.274.2
- Fixed an issue that could prevent access to the Engine statistics screen on web browsers with saved HTTP basic credentials.
GreenArrow v4.274.1
-
Fixed an issue preventing access to the Engine statistics screen on Centos 7 when HTTP is redirected.
-
Fixed an issue where internally created campaigns (campaigns created by GreenArrow for the bounce messages it creates) could have inaccurate send statistics when the bounce queue is at capacity.
-
The Studio split campaign statistics screen will now properly download CSV reports for only the part of the split that is currently loaded.
-
Restored view links in the “References to This IP Address” table.
-
Fixed a permission error encountered when editing throttling rules on the Dynamic Delivery screen.
GreenArrow v4.274.0
-
Engine users are now defined in the UI / API or configuration file (instead of an htpasswd file).
-
Engine authentication is now accomplished via a login screen (instead of HTTP Basic authentication).
-
Both Engine and Studio now support two-factor authentication.
-
Introduced the following configuration directives for defining Engine users in the configuration file:
-
Docker integration will no longer create an
admin
Engine user account when initializing a new container. Instead,GA_ADMIN_EMAIL
will be used as the initial administrator account username. -
Studio: The Get a List of Campaigns API now accepts a
state
parameter for filtering the results by the requested state(s). -
Added a new configuration directive lets_encrypt_service_restart_delay for delaying how frequently GreenArrow’s Let’s Encrypt integration can restart background services.
-
Fixed an issue in Studio’s subscriber domain segment. When using the
does not end with any of
operator, the segment returned the wrong set of subscribers when provided with multiple suffixes. -
Fixed an issue when purging Studio organizations that would cause all subscriber imports to be pulled into memory, sometimes leading to out-of-memory errors on organizations with extremely large numbers of imports.
-
Fixed an error in Studio’s suppressed addresses API when adding multiple suppressed addresses with the same address, differing only by leading or trailing whitespace.
-
Applied a patch to Apache to optimize loading configuration on systems with thousands of URL domains and thousands of IP addresses.
-
Fixed an issue in the bounce processor where messages that failed due to DNS resolution could erroneously be categorized as a hard bounce.
-
Fixed domain name security to be case-insensitive, protecting links against web clients that lowercase domain names.
GreenArrow v4.273.0
-
Studio will now check for the user permission “Subscribers Search/View” for the “View result for each message” screen in the SMTP section of statistics. This closes a hole where such users were able to access the list of SMTP recipients.
-
Fixed an issue in Studio’s content editor where the “Convert from HTML” button for text parts could fail if the converted text content had not changed from what was previously saved.
-
Fixed a performance regression to Studio’s subscriber imports introduced in GreenArrow v4.271.0 when neither of the
studio_subscriber_created
norstudio_subscriber_updated
events are in use. -
Fixed an issue in Studio where a custom field value of
null
(case insensitive) would store as blank.
GreenArrow v4.272.0
-
Fixed an issue wherein local deliveries in MultiQueue batches would fail.
-
Updated the
hvmail_snapshot_stats
command to be more resilient to execution environment. - Expanded event selection syntax in the new Event Processor. You may now specify that you want “all” events, minus specific events (i.e.
event_delivery_events all delivery_attempt=no
). - Updated our documentation to add a guide on how to Upgrade From Legacy Event Processor.
GreenArrow v4.271.0
-
Studio: Subscriber exports will now be automatically purged 30 days after the export finishes. This will prevent endless disk usage by subscriber exports.
-
Fix an issue introduced in GreenArrow v4.270.0 that would prevent
studio_subscriber_created
andstudio_subscriber_updated
events from being generated in the new event processor.
GreenArrow v4.270.0
- Added a new Event Processor for delivering events to HTTP/HTTPS endpoints. This new event processor is configured by the following configuration directives:
- event_delivery_destination
- event_delivery_url
- event_delivery_events
- event_delivery_delivery_attempt_config
- event_delivery_anonymize_localparts
- event_anonymization_constant
- event_delivery_max_concurrent_connections
- event_delivery_max_batch_size
- event_delivery_timeout
- event_delivery_client_certificate_file
- event_delivery_verify_peer
- event_delivery_disable_batching
- event_delivery_http_keepalive
- event_delivery_http_user_agent
- event_delivery_format
- event_delivery_serialize_all_columns
-
Legacy Event Notification System Configuration now requires you to run
greenarrow_config reload
after modifying the events that GreenArrow should be generated. -
Added a new configuration directive (server_id) for specifying a server ID. This value is included in events, useful for discerning multiple servers from each other.
-
Direct access to the Postgres database
events
table now has the following caveats:-
When querying from the
events
table, you must adddestination_id=1
to the conditions of your WHERE clause. This will cause any events configured using the event_delivery_destination directive to be excluded. -
When updating or deleting from the
events
table, you must addid = ?
to the conditions of your WHERE clause, only updating or deleting events you’ve already pulled down.
-
-
Added new commands for viewing the status of the GreenArrow events queue. Each of these commands accepts a
--json
argument to get JSON output instead of a user-friendly ASCII table.greenarrow events status
greenarrow events hourly_queue
- Fixed an issue where a misconfiguration of StatsD Integration could bring down the user interface.
GreenArrow v4.269.0
-
GreenArrow has a new bounce categorizer. This new categorizer is more accurate and supports a new bounce_processor_rule configuration directive for specifying your own bounce code overrides.
-
Studio: Restored
stat_id
that was previously available in the Get Campaign Details API. This was a regression in GreenArrow v4.248.0. -
Studio: Fixed an issue with the subscriber importer where upper-cased domains containing non-ASCII Unicode characters would fail upon re-import.
-
The following commands will now warn you if you haven’t run
hvmail_migrate
after upgrading GreenArrow packages:hvmail_init status
,greenarrow_status
, andgreenarrow_config reload
-
Studio: Fixed an issue where the “Deactivate Subscribers Not In Import” feature could sometimes cause a Postgres deadlock and fail the import.
GreenArrow v4.268.0
-
Updated
greenarrow_blockers
to warn you if your license key’s Support & Updates term has expired. This makes it harder to accidentally upgrade to a version of GreenArrow that isn’t supported by your license key. (Perpetual licensees have a perpetual right to use the software released while they maintained Support & Updates, but are not licensed to use versions released after the end of their Support & Updates term. This is enforced by the GreenArrow license key.) -
Studio: Added a new API for estimating the number of recipients in a campaign.
-
Added new possible return action
new_config
to Running Custom Code During Delivery Attempts. You can use this to override the VirtualMTA or envelope sender of the email. -
Fixed an issue where extra metadata was included in the
sender
key to Running Custom Code During Delivery Attempts. -
Add new attribute to the HTTP Submission API
amp_html
for injecting mail that uses AMP for Email. -
text/x-amp-html
parts of SimpleMH emails will now have click and open tracking applied to it (when enabled). This applies equally to email submitted using the newamp_html
of the HTTP Submission API and for emails injected via SMTP. -
Add support for the RedHat 9 and Alma Linux 9 Linux distributions.
-
Fix problem with removing base64 padding from DKIM public keys. Removing this padding was not RFC-compliant and was causing some systems to not validate 4096-bit keys.
GreenArrow v4.267.0
-
Engine: Added a new API for retrieving the status of throttles and to take throtles out of backoff mode.
-
Engine: Added UI buttons to take throttles out of backoff mode.
-
Added a new configuration directive smtp_match_begin_backoff_mode for engaging SMTP backoff mode using a regular expression.
-
Fixed presentation of times in Engine’s throttle screens (these times were previously printed in UTC – they now respect the engine_time_zone configuration).
-
Ending of SMTP Backoff mode is now evaluated every few seconds instead of purely on 5-minute intervals. This means that backoff mode ending times are no longer rounded to the closest 5 minutes.
-
Fix typo in error message for override_smtp_result.
-
Studio: Fix for autoresponder “Download Overview CSV” report. It previously wouldn’t honor the date range selected, instead loading all stats for the autoresponder.
GreenArrow v4.266.0
-
GreenArrow will no longer attempt to exceed the limits specified by the sysctl parameter
kernel.sem
when setting postgres_max_connections. See this document on tuning kernel.sem for more information. -
Studio: Replacement codes intended for usage by the Autoresponder trigger API can now include a
:raw
suffix (e.g.%%api:first_name:raw%%
) to skip HTML/URL encoding of the replaced content. -
Fix support for values of
/var/hvmail/control/queue.ram.concurrencyremote
or/var/hvmail/control/queue.disk.concurrencyremote
above int16max (32767). -
Removed a dead symlink
/var/hvmail/apache/htdocs/assets/highcharts.js
– this could cause warnings when runninghvmail_server_migration
.
GreenArrow v4.265.0
-
Studio: Adding addresses to a suppression list when they already exist is no longer a validation error. This will not produce duplicate records.
-
Improvements to the Event Notification System’s automatic table bloat cleaner.
-
Added a new configuration directive disable_automatic_shrink_events_table to disable the Event Notification System’s automatic table bloat cleaner.
-
Update language when deleting mailing lists to be clear that it will break links in campaigns that have already been sent with click-tracking enabled.
GreenArrow v4.264.0
-
Engine: SimpleMH click tracking statistics now consider uniqueness based on click tracking ID, in addition to email address.
-
Studio: Fixed presentation of statistics when all bounces are recorded as remote.
-
Increased the recommendation (or dynamically chosen value) for postgres_max_connections to account for additional configuration parameters that can affect Postgres utilization.
-
The CloudFlare header
CF-Connecting-IP
is now supported in addition toX-Forwarded-For
andClient-IP
. -
The files
/var/hvmail/control/studio.trusted_proxy_ips
and/var/hvmail/control/opt.engine.trusted_proxy_ips
now support CIDR ranges (in addition to specific IP addresses). -
Add new bounce processor rules.
-
Add support for the Ubuntu 22.04 Linux distribution.
-
Increased the allowed CPU and IO utilization of pre-processing Engine per-campaign statistics (to increase the priority of keeping statistics up-to-date).
-
Reverted default of dkim_sign_canonicalization_mode to be “relaxed” because we found that “simple” could cause an impact on deliverability in rare cases.
-
Studio: Fixed an issue that could prevent suppression lists from being deleted when referenced by segments on deleted mailing lists.
GreenArrow v4.263.0
- Added a new configuration directive override_smtp_result for overriding the SMTP result of a remote delivery using a regular expression.
GreenArrow v4.262.0
- Studio: Fixed an issue where quickly pausing and resuming a campaign with a slow sending speed could result in the campaign still being in a paused state.
GreenArrow v4.261.0
-
Added a new command greenarrow engine_clicks_opens_delete for deleting old Engine clicks and opens data.
-
Studio: Added ability to delete subscribers via the UI and API.
- Studio: Introduced a new configuration directive to prevent the deletion of subscribers:
-
Performance boost to injection and delivery.
- DKIM signing now by default uses “simple” canonicalization instead of “relaxed”. The following configuration directive is available to override this behavior.
GreenArrow v4.260.0
- Introduced several new configuration directives that control how messages are written to the disk queue.
- The following undocumented configuration files have been replaced by the directives listed above.
/var/hvmail/qmail-ram/control/rspawn-limiter.msgmover.maxmessages
/var/hvmail/qmail-ram/control/rspawn-limiter.msgmover.maxtime
/var/hvmail/qmail-ram/control/rspawn-limiter.msgmover.maxprocs
- The following documented configuration file has been replaced by the disk_queue_writer_fsync directive listed above.
/var/hvmail/control/opt.queue_no_fsync
-
If any of the above configuration files were in a non-default state, an entry setting the overrided value will be added to
/var/hvmail/control/greenarrow.conf
when you runhvmail_migrate migrate
. -
The default value for disk_queue_writer_concurrency is changing from 5 to 20. This may help performance for systems with large amounts of messages that are written to the disk queue. The value of 20 works much better for SSDs, which most installations of GreenArrow use. Spinning magnetic media hard drives might get better performance with lower values.
- Studio: Added an appropriate error when attempting to make non-global a suppression list which is used by the system configuration for automatic suppression.
GreenArrow v4.259.0
-
Added a new configuration directive simplemh_generate_click_tracking_id for automatically generating a click tracking ID in SimpleMH.
-
Studio: Added an
alt=""
attribute to the Google Analytics image tags. -
Studio: Fixed an issue where
%%subscriber_id%%
would not be replaced in Google Analytics image tags.
GreenArrow v4.258.0
-
Fixed an error when clicks or opens did not include a user agent.
-
Updated the
hvmail_snapshot_stats
command to not requirePATH
to be set. -
Reduced memory utilization of SimpleMH when injecting exceptionally large messages.
GreenArrow v4.257.0
-
Update default throttling template to include RoadRunner for new installations.
-
Fixed issue where SimpleMH would encode trailing whitespace into click tracking URLs, instead of stripping it.
-
Add new bounce processor rules.
GreenArrow v4.256.0
-
Studio: Fixed an issue where the responsive editor’s button components did not do click tracking when clicked in Microsoft Outlook.
-
Studio: Added semicolons as a supported subscriber import delimiter (in addition to commas and tabs).
-
Added support for TLS 1.2 connections to MS-SQL server in the event processor.
GreenArrow v4.255.0
-
Engine: Fixed a UI issue where new routing rules did not contain a default blank entry.
-
Studio: Fixed an issue where the “Portion” segmentation rule did not accept floating point numbers for the upper and lower bound over the API.
-
Engine: Fixed an issue with updating certain throttling rules from the command line.
GreenArrow v4.254.0
-
Prevent injection of emails using
qmail-inject
, SMTP, and HTTP Submission API to email addresses with blank localparts. -
Permit
List-Help
in custom headers in both Studio and SimpleMH. -
The Event Notification System will now automatically free up table bloat from the
events
queue table.
GreenArrow v4.253.0
-
studio_open
andengine_open
events now include anis_privacy_open
attribute. -
Studio: Added ability to segment on whether or not an open was a privacy or non-privacy open.
-
Studio: Added ability to segment on Autoresponder opens.
GreenArrow v4.252.0
-
Added a new command greenarrow print_disk_queue for viewing what’s currently in the disk queue.
-
Introduced a new configuration directive engine_time_zone for setting the time zone in Engine. This replaces a variety of other mechanisms for configuring the time zone in Engine.
-
Added a new configuration directive dkim_sign_ignore_header to skip selected headers when DKIM signing.
-
Improve warnings issued by
greenarrow_config
when the number of Postgres connections configured doesn’t line up with the number of connections that may be required.
GreenArrow v4.251.0
-
Studio: Introduced a new field on the Subscribers API
apply_custom_field_defaults
to allow API users to take advantage of custom field default values. -
Studio: Fixed an issue where subscriber imports could leave temporary data behind permanently, leading to bloat in GreenArrow’s internal Redis server.
GreenArrow v4.250.0
- Studio: Fixed an issue where subscriber imports that use the “deactivate subscribers not in import” feature could become stuck and not complete.
GreenArrow v4.249.0
-
Improved the suppression list search tool to allow for deleting suppressed addresses, making it easier to find and remove addresses from suppression lists.
-
The mailbox password is no longer included on Engine’s Mailboxes API. This may break some integrations.
-
Added the configuration directive mailbox_password_encoded to avoid putting raw passwords into
greenarrow.conf
. -
Allow Studio campaigns to scheduled with zero recipients. Campaigns that send to zero recipients will also not send to its seed lists.
-
Fixed an error in our legacy support for EDM Designer, restoring operation.
-
Added new configuration directives replace_content_domain_applies_to_from_domain and replace_content_domain_applies_to_reply_to_domain.
GreenArrow v4.248.0
-
Added privacy protection statistics to the Autoresponders API.
-
Speed improvements to segment creation on systems with many historic campaigns.
-
Prevent an issue where a slow loading segment could be overwritten if the user clicks on “Use this segment” before the segment loads.
GreenArrow v4.247.0
-
The SimpleMH click and open tracking domain can now optionally be specified using the X-GreenArrow-URL-Domain header.
-
Studio: Add whether an open was a privacy open to the subscriber activity screen.
-
Numeric custom fields will now be presented to Studio Special Sending Rules as integers (instead of a string containing an integer). This fix is to eliminate a difference between what the SSR “Preview” shows and what the SSR actually receives when sending a campaign.
GreenArrow v4.246.0
-
Added the from address to the Delivery Attempt Log and Delivery Attempt Event.
-
Added a new configuration directive log_header for adding specific message headers to the Delivery Attempt Log and Delivery Attempt Event.
GreenArrow v4.245.0
-
Update third-party software that ships with GreenArrow:
-
Routing rule interfaces will no longer reorder when editing in the user interface.
-
The “b” format is now the default click and open tracker URL format for X-GreenArrow-Tracker-Format. We discovered that the “b” format receives fewer bot clicks than the old default “a” format.
This can be overrided globally using the
/var/hvmail/control/opt.simplemh.tracker_format
configuration file (see the link above for more information).
GreenArrow v4.244.0
-
Fix alignment of new message lines in Engine dynamic delivery charts.
-
Added queue files that were previously generated at the time of installation to the RPM / Debian packages.
-
Fixed an issue when images with the same name were deleted and re-uploaded in the responsive content editor.
GreenArrow v4.243.1
- Fixed an issue with delivery attempt logs and events when the system clock was very far in the past.
GreenArrow v4.243.0
-
Add an option
pipe_command
to the Delivery Attempt Log. This is used to deliver delivery attempt logs to a program instead of (or in addition to) a file. -
Fixed incorrect reporting in Engine of “Recipients Clicked (Unique Clicks)”.
-
Added privacy protection statistics to Studio’s “Download Overview CSV” stat report.
-
Reliability improvement in first delivery attempt queueing that addresses a rare corner-case.
-
Added support for
greenarrow_status apache_status
when/var/hvmail/control/httpd.listen
is configured to a port other than 80. -
Fixed a broken path to a loading animation in Engine’s user interface.
GreenArrow v4.242.0
-
Updated default throttling template on new installations to use MX throttling.
-
Studio: Added two new replacement codes
%%data_url_domain%%
and%%data_url_domain_with_protocol%%
. -
Fixed an erroneous warning printed by
greenarrow_config
when replace_content_domain and disable_validating_domain_in_tracking_security are used together. -
Allow
Content-Type
to beapplication/json; charset=utf-8
in the HTTP Submission API. -
Update third-party software that ships with GreenArrow:
- Apache from 2.4.48 to 2.4.51
-
Fixed an issue with old disk-queue messages where they could get stuck in the queue when the internal message ID exceeded 32-bit integers. Any such messages will either send or expire once GreenArrow is upgraded to this release.
-
Fix position of popup in Engine’s “SMTP Server Stats” screen. It was appearing very low on the screen, impacting smaller screen sizes.
-
New installations of GreenArrow now have starttls_use enabled by default.
-
If you haven’t edited your greenarrow.conf, you will get the new default version of this file with starttls_use enabled.
-
GreenArrow recommends enabling starttls_use if you haven’t already done so. This is done with the following configuration directive:
ip_address * { domain * { # Use STARTTLS when it is available. starttls_use yes } }
GreenArrow v4.241.0
- Fixed an issue that prevented the studio_user_login_lockout_attempt_window and studio_user_login_lockout_duration directives from functioning properly.
GreenArrow v4.240.0
-
Added support for throttling and delivery configuration based upon the resolved MX hostname. See the domain configuration directive or Throttling more information.
-
Added a
**super**
ip_address context for overriding all other configuration that would otherwise apply to a delivery attempt. -
All delivery attempts now perform an MX lookup on the recipient domain - even when routing through a relay server. This is done in order to support the
mx:
syntax in throttling and routing rules. -
The delivery_override directive now accepts an optional second argument for customizing the message that will appear in the delivery attempt log.
GreenArrow v4.239.0
-
Added a new table to Engine and Studio statistics that breaks down opens between “All subscribers”, “Subscribers using privacy features”, and “Subscribers not using privacy features”.
This is intended to help with the impact of privacy features such as iCloud+ Private Relay and Mail Privacy Protection. Privacy features, when enabled, can automatically load and cache all images in a recipient’s incoming email – including tracking pixels. Additionally, when the email is actually read, no images are loaded from the server but instead served from this cache. This has the effect of artificially inflating open rates.
The new table will enable you to see an open rate that is roughly comparable to current open rates (that is, the unique open rate for “Subscribers not using privacy features”).
GreenArrow v4.238.0
- Add support for the Debian 11 Linux distribution.
GreenArrow v4.237.0
-
GreenArrow now includes the domain name in the anti-tamper protection in links created for click tracking, to prevent abuse of the link redirector service. Anti-tamper protection detects if the destination URL, the subscriber, or campaign details are tampered with, and returns an error to the user if the link was modified.
Including the domain name in anti-tamper protection is useful for email service providers, where one customer could send a link to themselves, capture that link, modify it to use a different domain name belonging to the ESP or another of the ESP’s customers, and then send spam using the modified link – hijacking a domain’s reputation to which they were never supposed to have access.
This release closes this loophole and helps to protect domain reputation.
-
Added the configuration directive disable_validating_domain_in_tracking_security to disable this behavior.
-
Added the configuration directive disable_validating_all_tracking_security which is intended for use when debugging issues related to proxy servers or load balancers in front of GreenArrow as a result of the new domain security enforcement.
-
WARNING Proxy servers or load balancers in front of GreenArrow must provide the
X-Forwarded-Host
header which advises click and open tracking the originally requested domain name by the client. If you use a proxy server or load balancer in front of GreenArrow, please read this section of our HTTP Server documentation before upgrading. -
WARNING If you use the configuration directive replace_content_domain, you must also enable disable_validating_domain_in_tracking_security in order for click and open tracking links to function properly.
GreenArrow v4.236.0
-
Fixed an issue that could cause the ram-queue to be filled, causing message injection to fail.
-
Fixed an issue where Studio was not using the “default” key in the bounce processor configuration – this caused Studio bounces to not apply custom bounce processor configuration properly.
-
Fixed an issue where delivery to domains with malformed MX records would defer instead of using available valid MX records.
-
Restored missing “Subscriber Clicked Any Campaign/Autoresponder” segment option.
-
Add new bounce processor rules.
GreenArrow v4.235.1
-
Fixed an error in Studio’s link tracking. This error could cause multiple links (in GreenArrow’s database) to be created for the same URL, resulting in incorrect reporting and segmentation of subscriber clicks.
-
Fixed an issue that caused the “View” button in the campaign content editor to not work with Remote Lists.
-
Fixed an issue that would cause GreenArrow to not start up automatically after a reboot on Debian when installed on a separate partition.
GreenArrow v4.235.0
-
Add new bounce processor rules.
-
Corrected the presentation of GreenArrow’s license type in Studio’s “System Configuration” page (next to the version number). Servers with older license keys will not show the previously incorrect value. New license keys will show the correct license type.
GreenArrow v4.234.2
-
Fixed an issue where if SimpleMH was configured with
$CLICKTHROUGH_URL
ending in/click.php
instead of/click
theList-Unsubscribe
header tag would be generated incorrectly. This fix is backward compatible with the incorrect links that were sent. -
Add new bounce processor rules.
GreenArrow v4.234.1
- Internal changes for GreenArrow Cloud.
GreenArrow v4.234.0
-
SimpleMH now supports multiple click and open tracker URL formats. See the X-GreenArrow-Tracker-Format documentation for more information.
-
Fixed an error in reporting of the disk queue size by
greenarrow disk_usage
when the disk queue is heavily used. -
Studio: Added support for autoresponders in both the “Subscriber Clicked Campaign” (now labeled as “Subscriber Clicked Campaign/Autoresponder”) and “Subscriber Clicked Link” clauses.
GreenArrow v4.233.1
- Fixed an issue where a queue was not flushed and a small percentage of messages could be lost in specific configurations.
GreenArrow v4.233.0
- Internal changes for GreenArrow Cloud.
GreenArrow v4.232.0
-
Added a new delivery_paused configuration directive. This is also available on the UI and API. This configuration will cause deliveries from a specific IP address to be paused in a fashion similar to the effect of pausing deliveries of individual sends in Engine’s UI.
-
Reduced GreenArrow’s CPU utilization when the disk queue has been idle for a long period of time.
GreenArrow v4.231.0
-
Added a new configuration directive replace_content_domain for changing domain names in content at the time of delivery based upon the IP Address or Relay Server used for delivery. See our documentation about this feature for more information.
-
Studio will now send remaining seeds “as fast as possible” once all campaign recipients have been sent. This fixes an edge case where you could pause a campaign after it had sent to all recipients (excluding seeds), leading to the campaign crashing.
GreenArrow v4.230.5
- Fixed an issue in Studio’s TinyMCE editor where the “Campaign Images Browser” would spin forever after uploading a new image.
GreenArrow v4.230.4
- Fixed an issue regarding migrations when upgrading from very old versions of GreenArrow. Previously individual migrations might call
greenarrow_config reload
; instead, this is now performed automatically afterhvmail_migrate migrate
is run.
GreenArrow v4.230.3
- Fixed an issue where the
GREENARROW_LOG_SMTP_COMMANDS
debug logging option on SMTP services would cause all authenticated incoming SMTP sessions to fail.
GreenArrow v4.230.2
- Fixed a UI error when viewing IP addresses and no settings were present in
greenarrow.conf
.
GreenArrow v4.230.1
-
Added an option file
/var/hvmail/control/opt.simplemh.debug
to enable more detailed logging in the SimpleMH service. -
Fixed a bug in the suppression list user interface where you could errantly get a “Mailing List cannot be set” error.
GreenArrow v4.230.0
-
SimpleMH will now always report the user agent of clicks and opens in the engine_click and engine_open Events. This was formerly controlled by the value of the
/var/hvmail/control/opt.simplemh_tracking_include_user_agent
file. -
Marketing Studio will now report the user agent of clicks and opens in the studio_click and studio_open Events.
-
Added a new
synchronous
attribute on bounce_all Events. -
Studio: Add a new type of suppression list that is not applied by default. See our Suppression List documentation for more information.
-
Studio: Add a segmentation criteria “Not In Suppression List” that can be used to segment on the new type of suppression list.
-
Increased the number of open files that Passenger may open. This resolved an issue where the web interface could display “Internal server error” instead of the requested content when under a high load.
-
Added support for RFC 8058 (List-Unsubscribe-Post) three ways.
-
SimpleMH: Added support for a
X-GreenArrow-List-Unsubscribe-HTTP-URL-Post
header.- If you are specifying a HTTP/HTTPS URL to be used in the
List-Unsubscribe
header by using theX-GreenArrow-List-Unsubscribe-HTTP-URL
header, then you can now also specify the value of theList-Unsubscribe-Post
header by adding aX-GreenArrow-List-Unsubscribe-HTTP-URL-Post
header. - The value of
X-GreenArrow-List-Unsubscribe-HTTP-URL-Post
will set theList-Unsubscribe-Post
header in the final message. - If
X-GreenArrow-List-Unsubscribe-HTTP-URL
is not specified, this header will not be used.
- If you are specifying a HTTP/HTTPS URL to be used in the
-
SimpleMH: If
X-GreenArrow-List-Unsubscribe-HTTP-URL
is not specified, an HTTPS unsubscribe link will be added toList-Unsubscribe
automatically.- Previously, the
List-Unsubscribe
header added by SimpleMH included only amailto
address. - Now, the
List-Unsubscribe
header added by SimpleMH will also include an HTTPS unsubscribe link and aList-Unsubscribe-Post
header will be added as well. - That unsubscribe link requires confirmation unless a POST is issued to it.
- Previously, the
-
Marketing Studio: All email sent from Marketing Studio will now include the
List-Unsubscribe-Post
header.- This header enables one-click unsubscribe workflows in some email readers.
- Previously, Marketing Studio’s unsubscribe page never required confirmation when
using the HTTPS unsubscribe link found in the
List-Unsubscribe
header. With this release, a confirmation click will be required if the user has JavaScript is disabled.
-
GreenArrow v4.229.1
- Fix an issue introduced in v4.228.2 where in Engine’s “SMTP Server Stats” tab, the popup of Failure messages failed to dismiss.
GreenArrow v4.229.0
-
Add support for the Ubuntu 20.04 Linux distribution.
-
Add the
hvmail_snapshot_stats
command which, records system statistics snapshots for GreenArrow support. -
Make the hvmail_unmanged_backup command ignore sockets recently added to GreenArrow. Before this release, the new sockets caused the script to print two harmless
socket ignored
notices.
GreenArrow v4.228.3
-
Make the permissions of the
/var/hvmail/studio/gems
directory more restrictive. -
Update PHP from 7.3.28 to 7.3.29.
GreenArrow v4.228.2
-
Fixed a visual issue in the Engine “sends” page where a long send name could cause the table to appear broken.
-
Performance optimization to the “Distribute Unsubs / Bounces / Spam Complaints” feature.
-
Upgrade jQuery to 3.6.0
GreenArrow v4.228.1
-
Update third-party software that ships with GreenArrow:
GreenArrow v4.228.0
-
GreenArrow now supports version 1 of HAProxy’s PROXY Protocol for SMTP delivery. This is configured with the proxy_server directive. See the Proxy Protocol documentation for more information.
-
The “SMTP Server Stats” each-message report can now be filtered by the SMTP result code.
-
Fix an issue where messages injected while the GreenArrow MTA is being restarted could show up twice in statistics.
-
Fixes in preparation for an upcoming conversion of subscriber IDs to be 64-bit integers.
GreenArrow v4.227.3
- Add a missing package to dependencies: shared-mime-info
GreenArrow v4.227.2
-
Eliminate the fade-on-hover effect on the dynamic delivery charts.
-
Fixed an issue that could cause autoresponders to send duplicate messages.
GreenArrow v4.227.1
- Fixed an issue introduced in v4.227.0 which caused some SMTP log messages to be logged incorrectly.
GreenArrow v4.227.0
-
Delivery Attempt Events now include
mx_hostname
andmx_ip
. -
Updated the processed logfile format to include
mx_hostname
andmx_ip
. -
Add option file
/var/hvmail/control/opt.send_api_debug_log
to write details about HTTP Submission API requests to the Apache error log.
GreenArrow v4.226.1
- Reduce memory requirements of downloading Marketing Studio campaign/autoresponder statistics.
GreenArrow v4.226.0
-
Add support for 2048-bit DH keys to GreenArrow’s SMTP services.
-
Add new bounce processor rules.
-
Fix a bug where NUL bytes (0x00) in a subscriber import would cause the import to fail.
GreenArrow v4.225.0
-
Fix a bug that prevents the default HTTPS VirtualHost from loading the intermediate certificate specified by tls_certificate_files.
-
The control file
/var/hvmail/control/opt.simplemh_tracking
was previously an undocumented feature that enabled both/var/hvmail/control/record_events.simplemh.open
and/var/hvmail/control/record_events.simplemh.click
. This file has been removed. If the file was enabled, the two individual control files will be turned on. -
/var/hvmail/bin/logdir_select_time
now supports LZOP compressed log files. -
Fix an issue with GreenArrow Docker integration where initialization of new volumes would fail on recent releases.
GreenArrow v4.224.0
-
Expand the ability to import and export throttle rules on the command line to support Throttle Templates. Previously, only throttle rules assigned to specific IP addresses could be imported and exported.
-
Remove the “Fullscreen” menu option when TinyMCE is launched from the campaign editor. That editor is already fullscreen and using it caused a graphical glitch.
GreenArrow v4.223.0
-
GreenArrow has a new disk-queue. This disk-queue uses a new data format. Your existing queue will be automatically converted to the new format. If you run into trouble and choose to downgrade, follow the downgrade instructions here.
-
Messages will no longer receive a final delivery attempt after expiring. Instead, the expiration time is compared to the next retry time after each delivery attempt. If the next retry time is beyond the expiration time, the message is treated as expired and bounces.
-
Added retry_time directive for overriding the retry time of messages on a per-VirtualMTA and/or per-domain basis. Using this directive, you can specify your own retry schedule.
-
Added queue_lifetime directive for overriding how long messages will be retried on a per-VirtualMTA and/or per-domain basis.
-
Fix a bug that caused
hvmail_report
’s processed logfile format to omit the SendSliceID field unless the--human
option was used. This could break compatibility for integrations depending on the order ofhvmail_report
’s output of the last 3 fields (SendSliceID, throttleid, and clicktrackingid).
GreenArrow v4.222.0
- Update the SMTP sink service to use GreenArrow Sink. This change speeds up the sink service. The sink no longer delays delivery by 1 second.
- Studio: Fixed an issue causing Special Sending Rule previews to falsely claim a URL domain or bounce email was deleted.
GreenArrow v4.221.0
- Internal changes for GreenArrow Cloud.
GreenArrow v4.220.2
- Studio: Campaign attachments will now have the correct Content-Type set for Microsoft Office documents.
GreenArrow v4.220.1
-
SimpleMH: Fixed an issue where HTML entities that don’t end in semicolons would be decoded when click tracking. For example, HTML with a link to
http://example.com/?a®=123
would be decoded ashttp://example.com?a®=123
. HTML entities now must end in a semicolon to be decoded. -
Engine: Fixed an issue in the event processor where a remote database connection that has encountered an error would continue to be tried.
GreenArrow v4.220.0
-
Add a new soft bounce rule to the bounce processor.
-
Update third-party software that ships with GreenArrow:
GreenArrow v4.219.0
-
Add a tool for viewing the remote connections that are currently open from the MTA. See this documentation for more information.
-
Engine: Update the HTTP Submission API to allow setting a custom Date header with the
headers
hash. -
Studio: Users can now change their default campaign HTML editor. This option does not affect existing campaign contents. See our user documentation for more information.
-
Engine: Make the hvmail_init status command report on the disk-queue’s
ok
file status. It previously only reported that file’s status for the ram-queue and bounce-queue. -
Studio: Updated SQL used by some segmentation criteria that could lead to slow starts to campaigns.
GreenArrow v4.218.0
-
Fix a configuration issue that could allow anonymous FTP logins if the
/var/ftp/
directory exists. -
Engine: smtpd services will now log a message that looks like this when it cannot parse AUTH input:
smtpd: smtp-auth authentication failure from (HOST) for username (unknown) with reason (malformed auth input)
-
Fixed an issue where some DKIM keys may not be used for signing.
GreenArrow v4.217.0
-
On December 14-15, 2020, Google sent out “The email account that you tried to reach does not exist” bounces for valid email addresses. This caused any such email addresses sent to during this time to be considered a bad address and deactivated.
We’ve added a greenarrow bounce_recovery tool to enable recovery from these erroneous bounces.
This page dedicated to the December 2020 Gmail Outage details how to recover from this specific outage.
-
Studio: Fixed an issue that prevented API keys that had created subscriber imports from being deleted.
-
Studio: Fixed an error that could appear in TinyMCE related to subscriber quotas.
-
Engine: Incorporated a new DKIM library that will eliminate sporadic generation of invalid signatures.
-
Engine: Changed the default DKIM signing algorithm from SHA1 to SHA256. The applies to both new and existing installs.
GreenArrow v4.216.0
- Added new columns to the Campaign Statistics Index export file:
- Campaign ID
- Subject (newline separated when more than one is present)
- Accepted
- Total Renders / Opens
- Total Render / Open rate
- Total Clicks
- Total Clicks rate
- Segment (if a named segment was used)
-
Added the number of “Accepted” messages to Studio’s statistics index.
- Fixed an issue wherein GreenArrow’s “Received:” header could simply be written as “Received: from unknown”.
GreenArrow 4.215.0
-
Fixed CVE-2011-0411: Plaintext command injection in multiple implementations of STARTTLS
-
Add support in User Defined JavaScript for Extending BEE Custom Rows with content dialog.
GreenArrow 4.214.0
-
GreenArrow can now run in SELinux permissive mode. Before this release, SELinux had to be disabled. SELinux enforcing mode remains unsupported.
-
Upgrade GreenArrow’s version of Highcharts to the latest release - 8.2.2.
GreenArrow 4.213.0
-
Upgrade TinyMCE to the current release (5.5.1).
-
Updates to the following third-party software that ships with GreenArrow:
GreenArrow 4.212.0
-
Studio: Anniversary autoresponders in Studio were using their delay settings inverted of what was intended. So if you have an anniversary autoresponder set to send “2 days before at 6pm”, it would actually send “2 days after at 6pm” (the reverse is also true - so “4 days after at 12pm” would be treated as “4 days before at 12pm”). This behavior has been fixed.
See GreenArrow Updates for information on updating existing autoresponders to maintain the old behavior.
-
Studio: Fixed an issue that could cause subscriber import deactivations to take an exceptionally long time.
-
Engine UI: Reword “SMTP Deferral Percentage” to be “SMTP Deferral+Failure Percentage”. The functionality has not changed - we’ve updated the label to better reflect the existing behavior.
-
Engine UI: Dynamic delivery charts date ranges should now be more accurate and reliable. Previously there was a mix of web browser and server time zones being used; now the charts use only the server time zone.
-
Engine/Studio: Fix a bug that caused the default HTTPS TLS certificate to take precedence over httpd.ssl.listen entries that did not specify a server name.
-
Upgrade TinyMCE to the current release (5.5.1).
GreenArrow 4.211.0
- Updated the Mailing List, Templates, and Campaigns tables so that each column can be used to sort the table.
GreenArrow 4.210.0
- Remove a limitation that prevents domain wildcard entries like
*.example.com
from being used when define_virtual_mtas_in_config_file is enabled.
GreenArrow 4.209.0
-
Update GreenArrow’s Docker container support to work with both CentOS 7 and Debian 10. Previously, only CentOS 7 was supported. See our drhinternet/greenarrow-docker Github repository for more information on how this beta feature works.
-
Updated the remote list retry schedule. Formerly, connections to remote list databases would get a total of 3 attempts in quick succession prior to marking the campaign as failed. The new retry schedule will make a total of 11 attempts with 30 seconds between each attempt.
-
Fix an issue that could cause Studio campaigns to fail with links longer than 2,712 bytes.
GreenArrow 4.208.0
- Added a new configuration option to the Event Processor that allows events to be delivered to HTTP endpoints as JSON, instead of form data. The option use_json_for_http_post can be set globally or on individual event destinations.
GreenArrow 4.207.0
- Add attachment support to the HTTP Submission API.
- Add support for CentOS 8 and Red Hat Enterprise Linux 8 Linux distributions.
GreenArrow 4.205.0
- New segmentation criteria - “Date Deactivated” - this allows you to find subscribers that were deactivated on a specific date (or date range). See the Segmentation Builder documentation for more information.
GreenArrow 4.204.1
-
Fix an issue introduced in GreenArrow 4.203.0. An interaction between throttle limits and connection reuse could cause some throttle groups to lock up, causing delivery attempts to that throttle group to stop.
-
Support for installing GreenArrow in Docker is now in beta. See our drhinternet/greenarrow-docker Github repository for more information on how this works.
GreenArrow 4.204.0
- You can now save custom rows for reuse in our responsive content editor. Custom rows are associated with a single mailing list, but can easily be used for campaigns on other lists. Read more in our content editor documentation.
- You must access Studio via HTTPS in order to use custom rows.
GreenArrow 4.203.0
-
The criteria for outgoing SMTP connection reuse has changed.
The previous behavior only reused connections when the domain of the recipient email address matched an available connection’s domain.
The new behavior reuses connections when all of the following are true:
- The recipient’s domain is part of the same throttle rule in GreenArrow as an available connection’s original recipient domain.
- The destination IP of the available connection matches at least one IP of the MX record returned by the recipient’s domain.
- The TLS status of the connection meets the requirement of the starttls_use and starttls_require directives.
This allows for more connection reuse.
GreenArrow 4.202.2
- When creating new IP addresses, if there is exactly one throttling template, it will be selected as the default when the form loads.
GreenArrow 4.202.1
- Fix a bug that could allow GreenArrow Engine web interface users with a -statsonly suffix to view non-stats pages in GreenArrow’s web interface.
GreenArrow 4.202.0
- Add support for triggering Studio Anniversary Autoresponders with global custom fields.
- Update GreenArrow’s packages to mark them as providing email related capabilities. This corrects a bug introduced in GreenArrow 4.200.0, where these markers were removed.
- For Red Hat-based Linux distributions, the markers restored are:
/usr/sbin/sendmail
,MTA
, andsmtpdaemon
- For Debian-based Linux distributions, the marker restored is:
mail-transport-agent
- For Red Hat-based Linux distributions, the markers restored are:
- Sending the alarm signal to the disk-queue (
svc -a /service/hvmail-disk-qmail-send
) now causes all queued messages in the disk-queue to be retried. This speeds up dumping messages from the disk-queue. - Dynamic Delivery charts will no longer show an error regarding falling behind on new installations of GreenArrow.
GreenArrow 4.201.0
-
Added an option
https_verify_peer
to the Event Processor configuration. This option allows you to disable HTTPS certificate verification during event delivery. -
Added an option
https_client_certificate
to the Event Processor configuration. This option allows you to set an HTTPS client certificate to be included event delivery to HTTPS destinations. This is useful if the destination server requires client certificate authorization. -
The list of trusted Certificate Authorities used by the Event Processor has been updated.
-
Added an option
commit_batch_size
to the Event Processor configuration. This option can provide increased event delivery performance. -
New configuration directive lets_encrypt_registration_server. This lets you override the Let’s Encrypt registration server, useful for testing without impacting your Let’s Encrypt Rate Limits.
-
Increased frequency of event delivery, leading to a significant increase in the Event Processor’s throughput.
-
A new value (mtaid_exists) is available to custom code that’s run during delivery attempts.
GreenArrow 4.200.1
-
Added documentation how to process clicks and opens behind a proxy server
-
In reaction to Google Chrome 84 blocking insecure downloads from secure (HTTPS) contexts, GreenArrow now uses HTTPS for communication when using the responsive content editor.
As such, we continue to recommend that you use GreenArrow’s Let’s Encrypt integration.
To avoid warnings or errors in the responsive content editor, ensure that you have a valid certificate for either the domain in
/var/hvmail/control/me
or use the new bee_images_domain configuration directive. -
Improved the appearance of very large message counts in Dynamic Delivery Statistics.
GreenArrow 4.200.0
- Unified GreenArrow Engine and GreenArrow Studio into a single “greenarrow” package
- Unified GreenArrow’s miscellaneous non-Engine and non-Studio packages into a single “greenarrow-support” package
- Reduced the disk space requirements of GreenArrow packages
Before GreenArrow version v4.200.0, Engine and Studio maintained separate changelogs. Refer to the Historic Engine Changelog or the Historic Studio Changelog for those versions