GreenArrow Configuration
- Table of Contents
- Overview
- Configure GreenArrow
- GreenArrow Logging
Overview
This page describes how to configure GreenArrow to use one or more GreenArrow Proxy servers.
See GreenArrow Proxy for information on how to install and configure GreenArrow Proxy.
Configure GreenArrow
The greenarrow_proxy directive (and its related directives) allows a GreenArrow instance to deliver through GreenArrow Proxy.
In the most simple case, where you want all remote delivery to go through a single GreenArrow Proxy server, configuration looks like this:
greenarrow_proxy proxy-primary {
greenarrow_proxy_server ga1.example.com:807
greenarrow_proxy_shared_secret "00000000000000000000000000000000"
greenarrow_proxy_throttle_reconciliation_mode average
}
ip_address * {
greenarrow_proxy proxy-primary
}
In another case if you want to host some IPs on one GreenArrow Proxy, and other IPs on a different GreenArrow Proxy, you would specify this on an IP-by-IP basis:
ip_address ipaddr-1, ipaddr-2 {
greenarrow_proxy proxy-primary
}
ip_address ipaddr-3, ipaddr-4 {
greenarrow_proxy proxy-secondary
}
For more information about configuring GreenArrow, see the following configuration directives:
- greenarrow_proxy
- greenarrow_proxy_server
- greenarrow_proxy_shared_secret
- greenarrow_proxy_throttle_reconciliation_mode
GreenArrow Logging
Most problems connecting through the GreenArrow Proxy are visible in the
rspawn-limiter
log.
For example, to see the last 5 minutes of this log, run the following command:
logdir_select_time --last '5 minutes' --dir /var/hvmail/log/rspawn-limiter | tai64nlocal
Every 5 seconds, this log will include lines like the following:
2024-10-17 14:08:40.001972500 remote_limiter: active=1475 backlog(ram=1658 bounce=42 disk=2155) remote=1475 hook=1
2024-10-17 14:08:40.002028500 remote_limiter: internal: callbacks=0/u newClients=0/u inbufferReader=8/64 asyncWriter=0/64 queueOutBytes{ram=0 bounce=0 disk=0} perlrunner=418 msgmover=0 remote=0 bytes_all_clients=0
2024-10-17 14:08:40.001973500 remote_throttle: above(forward=0/u back=0/u) __default__(forward=0/u back=0/u) gaproxy1(above(forward=0/u back=0/u) backlog=0 timeconnected=1h10m12s ping=1.082ms tcpforward(0/u) tcpback(0/u) rtcforward(0/u) rtcback(0/u)) gaproxy2(above(forward=0/u back=0/u) backlog=1834 timeconnected=1h10m12s ping=4.253ms tcpforward(0/u) tcpback(0/u) rtcforward(0/u) rtcback(0/u)) gaproxy3(above(forward=0/u back=0/u) backlog=1917 timeconnected=1h9m58s ping=0.317ms tcpforward(0/u) tcpback(0/u) rtcforward(0/u) rtcback(0/u))
2024-10-17 14:08:41.679214500 direct_remote_smtp: connections=21(active=21 cached=0)
2024-10-17 14:08:41.679214500 greenarrow_proxy(gaproxy2): connections=1629(active=759 cached=870)
2024-10-17 14:08:41.679214500 greenarrow_proxy(gaproxy3): connections=1276(active=711 cached=565)
Here’s a description of what’s included above (wrapped below for easier reading):
remote_limiter
This instance has 1475 active delivery attempts, 1658/42/2155 messages waiting in the ram/bounce/disk queues for throttle approval, 1475 remote delivery attempts, and 1 delivery attempt waiting for evaluation by thge Pre Delivery Attempt Hook. |
|
remote_limiter: internal
These are low level implementation details which can be useful for GreenArrow to diagnose issues. |
|
remote_throttle
Mostly low level implementation details, but with some key data points within it:
This tells us that this instance has been connected to the greenarrow_proxy Additionally, we have 1834 delivery attempts requested through this proxy that are waiting for approval from their relevant throttle. |
|
direct_remote_smtp
There are 21 remote SMTP connections established directly from this instance (i.e. not going through GreenArrow Proxy). There are no connections saved for reuse due to reuse_connections. |
|
greenarrow_proxy
This instance currently has 1629 connections open to the greenarrow_proxy These connections use the Proprietary GreenArrow Proxy Protocol referenced in GreenArrow Cluster. |