Name
binding — configure binding specific options
Description
binding "example" { # binding-specific settings }
Use the binding
stanza to define per-binding configuration options. You can nest domain
and host
stanzas inside binding
stanzas to create per-binding per-domain, or per-binding per-host configurations.
Apart from the domain
and host
options, the following options are commonly specified in a binding
stanza:
See Table 9.26, “binding options” to determine whether an option is valid in the binding scope. An example of a binding stanza follows.
binding "my_binding" {
bind_address = "208.77.188.166"
generate_bounces = true
ehlo_hostname = "my_name.com"
}
Warning
Binding names are case-sensitive. Spaces and colons are not allowed in binding names.
The "default" Binding
The default
binding is a special case of a binding scope. This binding exists without being explicitly defined. You can confirm its existence by issuing the ec_console command binding summary. Along with any other bindings that you have defined, you should also see Summary Statistics For Binding default
.
However, if you wish, you can explicitly create the default binding scope and set options in that scope. Do this in the following way:
binding "default" { ehlo_hostname = "example.com" }
Defining and using the "default" binding is required any time you want to change the behavior for any message that isn't assigned to some other binding. Do this in your configuration file as indicated above or set it at runtime using Lua (or Sieve). Setting the default binding from a script is done in exactly the same way as setting any other binding. For an example of setting a binding see msg:binding.
Even if you never assign messages to bindings the "default" binding can still be used to alter default behavior. This is done by setting the values of options in the default binding scope.
More importantly, if you do assign messages to bindings, ensure that all messages are assigned to bindings, or make sure that the fallback binding (otherwise known as "default") does what you want. Good scripting practice ensures that there is always an else
clause or some other way of ensuring that all messages are always dealt with in some way. For example, you could create a variable at the top of your script with the most general binding, then if
blocks to assign a message to a more specific binding if it matches. At the end of the script, assuming no if
condition applies, the else
clause would assign the message to the most general binding.
In a cluster configuration, if you wish to set an option to different values within the default binding scope you can do this by explicitly defining the default binding in the node-specific configuration file and then defining options within that scope. You can create a node-specific configuration file using the web UI or by manually creating it as described in “Best Practices for Adding Configuration Files”.
Removing a Binding
When you are removing a binding that is in use take the following steps:
-
Examine the binding assignment to determine if there are any policy settings associated with the binding.
-
If there are none, then suspend the binding and apply the configuration changes. For information about suspending a binding see suspend_delivery.
-
Examine the mail queue. If there is mail for the suspended binding, reassign it to another binding. If the queued messages are not reassigned to another binding, they will go to the default binding. For more information see showqueue and reroute queue.
-
Once all of reassigned messages are out of the queue, restart ecelerity to fully remove the binding from the configuration.
Scope and Valid Options
binding
is valid in the global scope and in the binding_group scope.
Options Valid in the Binding Scope
The options valid in the binding scope are as follows:
Option/Description | Default | Scopes |
---|---|---|
adaptive_adjustment_interval – Throttle the adaptive adjustment interval | 60 | binding, binding_group, domain, global |
adaptive_alert_email_destination – The address where adaptive alerts should be sent | binding, binding_group, domain, global | |
adaptive_alert_email_sender – Set the sender address of the alert email | NULL | binding, binding_group, domain, global |
adaptive_attempt_threshold – The minimum delivery attempts over a period during which bounce stats are collected and suspensions attempted | 2000 | binding, binding_group, domain, global |
adaptive_body_timeout – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_default_suspension – The amount of time to suspend a domain | 4 hours | binding, binding_group, domain, global |
adaptive_default_suspension_enabled – Enables and disables adaptive_rejection_rate_suspension_percentage | false | binding, binding_group, domain, global |
adaptive_ehlo_timeout – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_enabled – Whether to enable the adaptive module for a specific scope | false | binding, binding_group, domain, global |
adaptive_fbl_volume_threshold – The minimum total delivered mail count over a period during which FBL stats are collected | 20000 | binding, binding_group, domain, global |
adaptive_idle_timeout – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_mailfrom_timeout – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_max_deliveries_per_connection – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_max_outbound_connections – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_max_recipients_per_batch – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_max_recipients_per_connection – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_max_resident_active_queue – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_max_retries – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_max_retry_interval – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_notification_events – Configure the events that will trigger an email notification | throttle suspension blackhole | binding, binding_group, domain, global |
adaptive_notification_events – Configure the events that will trigger an email notification | throttle suspension blackhole | binding, binding_group, domain, global |
adaptive_notification_interval – The throttle for adaptive alert notification emails | 3600 | binding, binding_group, domain, global |
adaptive_outbound_throttle_messages – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_positive_adjustment_interval – Throttle positive adjustments to adaptive changes | 3600 | binding, binding_group, domain, global |
adaptive_rcptto_timeout – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_rejection_rate_suspension_percentage – The rate at which messages are rejected | 20 | binding, binding_group, domain, global |
adaptive_retry_fuzz – Allow greater control over bulk message retries in cases where all messages for a domain have to be retried | 4096 | binding, binding_group, domain, global |
adaptive_retry_interval – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_rset_timeout – Set the bounds for the adaptive option | binding, binding_group, domain, global | |
adaptive_scope – Define the scope applicable to adaptive delivery | auto | binding, binding_group, domain, global |
adaptive_sweep_rule (scope) – Set the thresholds and actions for adaptive fbl and bounce rules | binding, binding_group, domain, global | |
adaptive_sweep_rule_enabled – Enable or disable adaptive_sweep_rule in a specified scope | 1 | binding, binding_group, domain, global |
apn_expiry – Define the number of seconds after which an APNs notification is no longer valid | yes | binding, binding_group, domain, global |
bind_address – Source address for outbound connections | binding, binding_group, global | |
blackhole – Blackhole mail | false | binding, binding_group, domain, global |
body_timeout – Network timeout once the DATA phase is complete | 600 | binding, binding_group, domain, global |
bounces_inline_original – How much of the original message to include in MDNs | headers | binding, binding_group, domain, global |
cluster_max_outbound_connections – Set the maximum number of outbound connections for a domain | -1 | binding, domain, global, host |
cluster_scope_max_outbound_connections – Provide traffic shaping for outbound connections | binding, binding_group, domain, global, host | |
cluster_server_max_outbound_connections – Set the maximum number of outbound connections | binding, binding_group, global | |
connect_timeout – Set the connection timeout | 300 | binding, binding_group, domain, global |
connect_timeout_to_delay – Time interval before moving mail into the delayed queue | 900 | binding, binding_group, domain, global |
connection_allocation_aggressiveness – Tune the aggressiveness for establishing new connections to domains | normal | binding, binding_group, domain, global |
delay_dsn_max_retry_interval – Maximum interval for sending DSNs to the sender of a message that has not yet been delivered | 43200 | binding, binding_group, domain, global |
delay_dsn_retry_interval – Base interval for sending DSNs to the sender of a message that has not yet been delivered | 3600 | binding, binding_group, domain, global |
delayed_binding_domain_fuzz – The time period to spread scheduled messages over when a bulk requeue is necessary | 0 | binding, binding_group, global |
delivery_method – Set the delivery method | ESMTP, SMTP | binding, binding_group, domain, global |
delivery_response_timeout – Time to wait for a response to an outbound request | 5000 | binding, domain, global |
dkim – Enable or disable signing messages | binding, binding_group, domain, global | |
domain (scope) – Configure domain-specific options | binding, binding_group, global | |
domainkeys – Enable or disable domainkeys signing | binding, binding_group, domain, global | |
drop_body_after_trans_fail – Number of retry attempts before freeing message memory | 3 | binding, binding_group, domain, global |
“DuraVIP™: IP Fail over” – Specify a DuraVIP™ preference | binding, listen | |
ecstream_port – Configure the port for ecstream deliveries | 1825 | binding, binding_group, domain, global |
ecstream_timeout – The amount of time to wait for an ecstream connection to be established | 600 | binding, binding_group, domain, global |
ehlo_hostname – Set the hostname used for EHLO in outbound mail | hostname | binding, binding_group, domain, global |
ehlo_timeout – Network timeout for EHLO | 300 | binding, binding_group, domain, global |
“DuraVIP™: IP Fail over” – Whether to enable Durable MultiVIP© bindings | binding, listen | |
enable_fbl_header_insertion – Enable or disable fbl header insertion | binding, binding_group, domain, global | |
exclude_vctx – Exclude validation connection context keys from being journaled in the spool metadata | binding, binding_group, domain, global | |
exclude_vctx – Exclude validation message context keys from being journaled in the spool metadata | binding, binding_group, domain, global | |
fully_resolve_before_smtp – Resolve all MX and A records before attempting delivery | true | binding, binding_group, domain, global |
gateway – Configure a static SMTP route for mail | binding, binding_group, domain, global | |
gcm_application_id – Define the package name of the Android application allowed to received notifications | binding, binding_group, domain, global | |
gcm_authorization_token_id – The authorization token that permits sending Google push notifications | binding, binding_group, domain, global | |
gcm_delay_while_idle – Whether or not to send the notification immediately if a device is idle | false | binding, binding_group, domain, global |
gcm_dry_run – Test a request without actually sending a message | false | binding, binding_group, domain, global |
gcm_ttl – Default Time To Live for notifications | -1 | binding, binding_group, domain, global |
generate_bounces – Generate MDNs if mail is failed after reception | true | binding, binding_group, domain, global |
generate_delay_dsn – Generate DSNs if mail is delayed | false | binding, binding_group, domain, global |
host (scope) – Configure host-specific options | binding, binding_group, global | |
http_basic_auth – Define the user credentials when using basic HTTP authentication | binding, binding_group, domain, global | |
http_host – Define the HTTP host | binding, binding_group, domain, global | |
http_method – Define the HTTP method to use | POST | binding, binding_group, domain, global |
http_uri – Define the HTTP URI that you wish to connect to | binding, binding_group, domain, global | |
http_version – Define the HTTP version to use | 1.1 | binding, binding_group, domain, global |
idle_timeout – Time to maintain idle outbound connections | 5 | binding, binding_group, domain, global |
lmtp_port – Configure the port for LMTP deliveries | 2003 | binding, binding_group, domain, global |
mailerdaemon – Set the From: address for MDNs | binding, binding_group, domain, global | |
mailfrom_timeout – Timeout after MAIL FROM | 300 | binding, binding_group, domain, global |
max_deliveries_per_connection – Maximum number of messages to deliver before closing a connection | 0 | binding, binding_group, domain, global |
max_outbound_connections – Set the maximum number of outbound connections | 32 | binding, binding_group, domain, global, host |
max_recipients_per_batch – The maximum number of recipients to send in a single outbound message transaction | 100 | binding, binding_group, domain, global |
max_recipients_per_connection – The maximum number of recipients to send on a connection | 0 | binding, binding_group, domain, esmtp_listener, global, listen, peer |
max_resident_active_queue – Threshold above which messages are not held in memory | 250 | binding, binding_group, domain, global |
max_resident_messages – Threshold above which messages are not held in memory | 32768 | binding, binding_group, global |
max_retries – Override the system configured max_retries | binding, binding_group, domain, global | |
max_retry_interval – Maximum retry interval | 43200 | binding, binding_group, domain, global |
mdn_failures_notify – Mailbox to which to send null recipient MDNs | binding, binding_group, domain, global | |
message_expiration – Time to live for messages | 86400 | binding, binding_group, domain, global |
never_attempt_expired_messages – Never attempt delivery of expired messages | false | binding, binding_group, domain, global |
never_retry – Whether or not to retry delivery of failed messages | false | binding, binding_group, domain, global |
opendkim_sign – Whether or not to enable OpenDKIM signing | true | binding, binding_group, domain, global |
outbound_throttle_connections – Limit the rate at which connections are established | binding, binding_group, domain, global | |
outbound_throttle_messages – Limit the rate at which messages are delivered | binding, binding_group, domain, global | |
rcptto_timeout – Timeout after RCPT TO | 300 | binding, binding_group, domain, global |
remote_smtp_port – Set the port to be used for SMTP deliveries | 25 | binding, binding_group, domain, global |
response_transcode_pattern – The regex pattern for comparison to a server response | binding, binding_group, domain, global | |
response_transcode_replace – The replacement string for a server response | binding, binding_group, domain, global | |
retry_interval – Base retry interval | 1200 | binding, binding_group, domain, global |
rset_timeout – Set the timeout after RSET | 30 | binding, binding_group, domain, global |
scope_max_outbound_connections – Provide traffic shaping for outbound connections | binding, binding_group, domain, global | |
send_8bitmime – Enable advertising of 8BITMIME when sending mail | no | binding, binding_group, domain, global |
server_max_outbound_connections – Sets the maximum number of outbound connections | 20000 | binding, binding_group, global |
suspend_delivery – Prevent outbound mail delivery | false | binding, binding_group, domain, global |
tls – Determine whether to use a TLS connection for outbound mail | no | binding, binding_group, domain, global |
tls_ca – Certificate authority for outbound mail | binding, binding_group, domain, global | |
tls_certificate – Certificate to use for inbound and outbound mail | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener | |
tls_ciphers – Allowable ciphers for a TLS session | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener | |
tls_ifavailable_fallback – Determine the behavior if TLS negotiation fails | true | binding, binding_group, domain, global |
tls_key – the TLS key to use for outbound mail or inbound mail | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer, xmpp_listener | |
tls_protocols – Allowable ciphers for TLS inbound and outbound sessions | binding, binding_group, domain, ecstream_listener, esmtp_listener, global, http_listener, listen, pathway, pathway_group, peer | |
tls_verify – Specify how to handle the remote certificates | no | binding, binding_group, domain, global |
transform_8bitmime_content – Enable 8BITMIME downconversion when sending mail | ifneeded | binding, binding_group, domain, global |
xclient – Use the XCLIENT extension to SMTP for outbound mail | no | binding, binding_group, domain, global |