My colleague Imran Yousaf and I got the opportunity to get our hands dirty on Cisco Ironport email security appliance (ESA) model C390. We want to see the maximum throughput in terms of outbound emails which this device can process in one hour.
As there are 100s of components involves in email delivery such as antivirus scanner, antispam ,bandwidth, sender/recipient domains reputation, throttling on recipient side etc, end to end email delivery variates for same email.
We want to get an idea about the size of a cluster which we require to process our daily email delivery.
We could not find any data available on Internet therefore we setup our own testbed and sent bulk emails with different parameters to calculate the average throughput. This test will give a very crude idea. For precise sizing, you must check with your Cisco Account manager or sales team.
We have used Linux machine for generating emails using smtp-source which is multi-threaded SMTP/LMTP test generator. Time was calculated to send the batch of emails and workqueue along with CPU utilization was observed.
Here is the syntax of command used
time smtp-source -s 1 -l 5120 -m 500 -c -S "A test mail Induslevel" -f [email protected] -t [email protected] esa-server.induslevel.com:25
Flag | Details |
---|---|
time | calculate total time taken for command execution |
s | number of connections |
l | size of each email |
m | number of emails |
c | display email counter during command execution |
S | subject of email |
t | sender address |
f | recipient address |
Test Run # 1
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connection = 1
Number of Mails = 500
Mail size = 5KB
time smtp-source -s 1 -l 5120 -m 500 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
500
real 0m7.223s
user 0m0.024s
sys 0m0.122s
Test Run # 2
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connection = 1
Number of Mails = 5000
Mail size = 5KB
time smtp-source -s 1 -l 5120 -m 5000 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
5000
real 1m14.261s
user 0m0.253s
sys 0m1.188s
Test Run # 3
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connection = 1
Number of Mails = 5000
Mail size = 50KB
time smtp-source -s 1 -l 51200 -m 5000 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
5000
real 2m18.681s
user 0m0.391s
sys 0m1.386s
Test Run # 4
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connection = 1
Number of Mails = 10000
Mail size = 15KB
time smtp-source -s 1 -l 15360 -m 10000 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
10000
real 2m52.353s
user 0m0.558s
sys 0m2.292s
Test Run # 5
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connection = 1
Number of Mails = 20000
Mail size = 15KB
time smtp-source -s 1 -l 15360 -m 20000 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
20000
real 5m47.147s
user 0m1.067s
sys 0m4.688s
Test Run # 6
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connections = 10
Number of Mails = 2000
Mail size = 15KB
time smtp-source -s 10 -l 15360 -m 2000 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
2000
real 0m23.046s
user 0m0.089s
sys 0m0.437s
Test Run # 7
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connections = 10
Number of Mails = 20000
Mail size = 15KB
time smtp-source -s 10 -l 15360 -m 20000 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
20000
real 3m46.463s
user 0m1.004s
sys 0m4.585s
Test Run # 8
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connection = 10
Number of Mails = 60000
Mail size = 50KB
time smtp-source -s 10 -l 51200 -m 60000 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
60000
real 14m19.163s
user 0m4.436s
sys 0m17.431s
Test Run # 9
Condition: ESA was configured to accept all emails and process them. Three Gmail addresses were created.
[email protected]
[email protected]
[email protected]
Emails were generated from three different sources simultaneously.
Sender = [email protected]
Recipient1 = [email protected]
Recipient2 = [email protected]
Recipient3 = [email protected]
Source 1
Number of Connections = 1
Number of Mails = 1000
Mail size = 5KB
time smtp-source -s 1 -l 5120 -m 1000 -c -S “A 1000 test mail from Station 1” -f [email protected] -t [email protected] esa-server.induslevel.com:25
real 9m22.762s
user 0m0.124s
sys 0m0.340s
Source 2
Number of Connections = 1
Number of Mails = 1000
Mail size = 5KB
time smtp-source -s 1 -l 5120 -m 1000 -c -S “A 1000 test mail from Station 2” -f [email protected] -t [email protected] esa-server.induslevel.com:25
real 9m22.555s
user 0m0.143s
sys 0m0.329s
Source 3
Number of Connections = 1
Number of Mails = 1000
Mail size = 5KB
time smtp-source -s 1 -l 5120 -m 1000 -c -S “A 1000 test mail from Station 3” -f [email protected] -t [email protected] esa-server.induslevel.com:25
real 9m21.828s
user 0m0.144s
sys 0m0.315s
Test Run # 10
Condition: ESA was configured to accept all emails and process them. Three Gmail addresses were created.
[email protected]
[email protected]
[email protected]
Emails were generated from three different sources simultaneously.
Sender = [email protected]
Recipient1 = [email protected]
Recipient2 = [email protected]
Recipient3 = [email protected]
Source 1
Number of Connections = 10
Number of Mails = 10000
Mail size = 5KB
time smtp-source -s 10 -l 5120 -m 10000 -c -S “A 10000 test mail from Station 1” -f [email protected] -t [email protected] esa-server.induslevel.com:25
real 10m23.889s
user 0m0.624s
sys 0m2.651s
Source 2
Number of Connections = 10
Number of Mails = 10000
Mail size = 5KB
time smtp-source -s 10 -l 5120 -m 10000 -c -S “A 10000 test mail from Station 2” -f [email protected] -t [email protected] esa-server.induslevel.com:25
real 10m23.853s
user 0m0.939s
sys 0m2.839s
Source 3
Number of Connections = 10
Number of Mails = 10000
Mail size = 5KB
time smtp-source -s 10 -l 5120 -m 10000 -c -S “A 10000 test mail from Station 3” -f [email protected] -t [email protected] esa-server.induslevel.com:25
real 10m23.941s
user 0m0.860s
sys 0m2.794s
Test Run # 11
Condition: ESA was configured to accept all emails and process them. Emails were delivered to an internal SMTP server
Sender = [email protected]
Recipient = [email protected]
Number of Connections = 10
Number of Mails = 100000
Mail size = 5KB
time smtp-source -s 10 -l 5120 -m 100000 -c -S “A 100k test mail from Station 1” -f [email protected] -t [email protected] esa-server.induslevel.com:25
real 21m50.590s
user 0m4.648s
sys 0m20.813s
Test Run # 12
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connection = 1
Number of Mails = 20000
Mail size = 500KB
time smtp-source -s 1 -l 5120000 -m 20000 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
20000
real 11m46.102s
user 0m1.766s
sys 0m6.151s
Test Run # 13
Condition: ESA was configured to accept all emails and process them. However, instead of forwarding it to mail server, it was programmed to drop the email at the end
Sender = [email protected]
Recipient = [email protected]
Number of Connection = 1
Number of Mails = 100000
Mail size = 500KB
time smtp-source -s 1 -l 5120000 -m 100000 -c -S “A test mail Induslevel” -f [email protected] -t [email protected] esa-server.induslevel.com:25
20000
real 58m52.986s
user 0m8.915s
sys 0m29.912s
Summary
Sr | Connections | Mail size (KB) | Number of emails | Total data size (MB) | Time taken (sec) | Throughput (email per sec) | Load on ESA |
1 | 1 | 5 | 500 | 2 | 7 | 71.43 | 50% (normal) |
2 | 1 | 5 | 5,000 | 24 | 74 | 67.57 | 50% (normal) |
3 | 1 | 50 | 5,000 | 244 | 138 | 36.23 | |
4 | 1 | 15 | 10,000 | 146 | 172 | 58.14 | |
5 | 1 | 15 | 20,000 | 293 | 347 | 57.64 | |
6 | 10 | 15 | 2,000 | 29 | 23 | 86.96 | |
7 | 10 | 15 | 20,000 | 293 | 226 | 88.50 | |
8 | 10 | 50 | 60,000 | 2,930 | 859 | 69.85 | |
9 | 3 | 5 | 3,000 | 15 | 562 | 5.34 | |
10 | 30 | 5 | 30,000 | 146 | 623 | 48.15 | 99.00% |
11 | 10 | 5 | 100,000 | 488 | 1,310 | 76.34 | |
12 | 1 | 512 | 20,000 | 10,000 | 706 | 28.33 | 60% (a bit higher) with peak of 85% |
13 | 1 | 512 | 100,000 | 50,000 | 3,532 | 28.31 | 60% (a bit higher) with peak of 85% |
Average Emails per Seconds | 55.60 |
Conclusion
Based on our testing, we have concluded that Cisco C390 ESA can deliver 50-60 email per second in our setup.