Photo by Lukas on Pexels.com

Introduction

Testing the load capacity of an SMTP server is a crucial task for ensuring its reliability and performance under heavy usage. Postfix, a popular mail server, offers tools like smtp-source and the deprecated smtpstone to facilitate stress testing. While smtpstone is no longer included in Postfix versions 2.10 and above, you can still find older binaries on GitHub for use with legacy setups. These tools allow you to evaluate your SMTP server’s ability to handle multiple connections and high message throughput.


Preparation for Load Testing

To begin load testing your Postfix installation, you can use smtp-source, a tool designed to inject messages into the server and measure its performance under stress. Below is a step-by-step guide:

  • Injecting Test Messages
    Use smtp-source to inject test messages into your Postfix server. Here’s an example command to send 100 messages, each 5 KB in size, using 20 parallel sessions:
time ./smtp-source -s 20 -l 5120 -m 100 -c -f sender@example.com -t recipient@example.com localhost:25 
  • Command Breakdown:
    • -s 20: Specifies 20 parallel sessions.
    • -l 5120: Defines the size of each message in bytes (5 KB).
    • -m 100: Sets the total number of messages to send.
    • -c: Enables persistence of connections across messages.
    • -f sender@example.com: Specifies the sender’s email address.
    • -t recipient@example.com: Specifies the recipient’s email address.
    • localhost:25: Points to the Postfix server running on localhost at port 25.

  • Monitor Performance
    Use the time command to measure how long it takes to inject the messages. For real-time monitoring of server logs

tail -f /var/log/maillog

  • Testing with smtpstone (Deprecated)
    If you prefer to use smtpstone, copy the binary from an older Postfix installation. Ensure the file is executable:
chmod 777 /path/to/smtp-source.c 
  • Install required dependencies:
yum group install "Development Tools"
yum install man-pages
yum install centos-release-scl
  • Then run the tool with similar parameters for stress testing.
  • Post-Testing Configuration Checks
    • Ensure Postfix settings in main.cf are properly configured.
    • Restart the Postfix service for any configuration changes:
systemctl restart postfix
  1. Check the mail queue with: mailq

Conclusion

Whether you’re using the actively maintained smtp-source or the older smtpstone, Postfix provides robust tools to assess your SMTP server’s performance. Load testing ensures your email server can handle demanding scenarios, helping you preempt issues before they impact users. By following these steps, IT admins can confidently stress-test their SMTP setups and optimize them for real-world workloads.