¿ªÔÆÌåÓý

Scaling SMTP was Re: [GMF] help with what this message means?


Glenn Glazer
 

On 6/9/2018 22:34, Shal Farley wrote:
Hi Lena!

> groups.io uses only one outbound server (a SMTP proxy): 66.175.222.12

Thanks, I was kind of wondering about that but wasn't sure.

I don't know enough about modern systems configuration (and all the available edge devices) to guess whether that can remain true as Groups.io grows.

Shal

HELO groupmanagersforum.groups.io

SMTP is a state-in-transaction protocol, meaning that during a transaction (sending a single message) there is state (mostly keeping track of what stage of the protocol we are in) during a transaction, but there is no state in-between transactions.

The typical way of scaling such things is to use horizontal scaling with a load balancer front end that has session traffic marking.? The basic idea is that if you have three servers, Alice, Bob and Charlie that are all identical in terms of SMTP processing, and someone sends a message. The balancer may assign this transaction to Charlie and then all packets for this transaction (session, in load balancer terms) will be routed to Charlie.? Once the transaction is completed, the session info is deleted and the next message may to go Alice, to Bob or to Charlie again, route to that host for that transaction and so on.?

There are different policies for choosing which of Alice, Bob or Charlie is chosen for a particular session, the two most common are random assignment and assignment to the host with the least number of sessions at the time of decision.

All of a transaction usually takes only seconds, the sender perceives it as the time between clicking send and a notification from their MUA that the mail was sent.

Best,

Glenn

QUIT

[ad trimmed by moderator]


 

Glenn,

HELO groupmanagersforum.groups.io
LOL!

The typical way of scaling such things is to use horizontal scaling
with a load balancer front end that has session traffic marking.
This sounds like a description of inbound load balancing, but I imagine that outbound sort-of mirrors it.

I know that Yahoo Groups' outbound system sorted the traffic by destination domain and generally sent batches of messages to each domain in order to reduce transaction overhead. They also used a fleet of outbound servers (physical, in the day, possibly virtual later) covering a large number of IP addresses - something Lena has tracked over the years, and which at one time was listed here to help mail services with whitelisting them:


But Groups.io is built out of much more modern stuff (hardware and software), and as yet anyway likely carries much less traffic, so its structure is likely much different.

All of a transaction usually takes only seconds,
Back in March Mark commented that outbound traffic was peaking near 5M messages per day, which is something like 60 per second. So clearly a fair amount of parallelism is required in the transaction handling. And would be anyway, just to avoid stalling on a particularly slow destination server.

Whether that load can be handled in a single modern-day server, or requires multiples, and in the latter case whether the multiples can hide behind some form of edge concentrator to appear as a single outbound IP address is where my curiosity lead.

Where it has an impact on we users is when destination services use IP-based filtering, and need to maintain a whitelist or reputation database. As apparently is the case with Outlook/HotMail. In the extreme case you end up with something like Yahoo Group's server list that must be published. Though from what Mark (and the posting cited below) said it seems there are now more official "back channel" ways to communicate server addresses between senders and receivers.

Before Lena's answer I thought perhaps the cited IP address might have been a new one, causing the disruption because it was unknown to Outlook/HotMail. That is, I thought this might have been an instance similar to this (though years old):


But if there's only been one Groups.io outbound IP then that's not Outlook/HotMail's excuse.

Shal


--
Help: /static/help
More Help: /g/GroupManagersForum/wiki
Even More Help: Search button at the top of Messages list


Glenn Glazer
 

On 6/10/2018 11:56, Shal Farley wrote:


The typical way of scaling such things is to use horizontal scaling
with a load balancer front end that has session traffic marking.
This sounds like a description of inbound load balancing, but I imagine that outbound sort-of mirrors it.
It is.? I wasn't sure how technical the audience is here, so I decided to only post client side of things to avoid confusion.


I know that Yahoo Groups' outbound system sorted the traffic by destination domain and generally sent batches of messages to each domain in order to reduce transaction overhead. They also used a fleet of outbound servers (physical, in the day, possibly virtual later) covering a large number of IP addresses - something Lena has tracked over the years, and which at one time was listed here to help mail services with whitelisting them:


But Groups.io is built out of much more modern stuff (hardware and software), and as yet anyway likely carries much less traffic, so its structure is likely much different.

All of a transaction usually takes only seconds,
Back in March Mark commented that outbound traffic was peaking near 5M messages per day, which is something like 60 per second. So clearly a fair amount of parallelism is required in the transaction handling. And would be anyway, just to avoid stalling on a particularly slow destination server.

Whether that load can be handled in a single modern-day server, or requires multiples, and in the latter case whether the multiples can hide behind some form of edge concentrator to appear as a single outbound IP address is where my curiosity lead.
So, the typical way of doing an outbound server is to have a message queue and the outbound servers grab messages off the queue and send them as fast as they can.? This is to prevent the servers from backing up or flooding their own NICs.

To do what Yahoo! did, just have multiple queues, one for each common domain, where the queues batch messages into tasks that the servers send in single transactions.

To mimic a single IP address just takes a proxy and if all traffic goes through the proxy, then it all has the same IP address.? Of course, care must be taken to not swamp the proxy.


But if there's only been one Groups.io outbound IP then that's not Outlook/HotMail's excuse.
There is nothing Groups.io can do to save MS from itself.? ;)

Best,

Glenn