postal - program to test SMTP mail server throughput.
postal [-m maximum-message-size] [-M minimum-message-size] [-t
threads] [-c messages-per-connection] [-r messages-per-minute] [-s
ssl-percentage] [-L] [-l local-address] [-a] [-b [no]netscape] [-[z|Z]
debug-file] [-f sender-file] smtp-server user-list-filename
This manual page documents briefly the postal
It is designed to test the performance of SMTP email servers by sending random
messages to the specified server as fast as possible.
parameter specifies the IP address or name of the mail
server that the mail is to be sent to. Mail sent by Postal
will not use
MX records, this is to allow testing outbound relays etc. If you want to
specify a port other than port 25 then enclose the host address in square
brackets and have the port address immediately following. If you want a DNS
lookup for every connection (for testing round-robin DNS) then immediately
precede the host address with a '+' character. To specify multiple servers for
round-robin use then separate the addresses with commas. Note that
is used for connecting to the same machine.
is the name of a file which contains a list of
user's email addresses. This can be just user-names or fully qualified email
addresses. Whatever you specify will be sent exactly in the SMTP protocol so
make sure you do whatever is appropriate. If unsure then use fully qualified
addresses (IE email@example.com).
contains a list of users that will be in the From: field
and envelope sender of the messages. If it is not specified then the
user-list-filename will be used for the sender list.
indicates the size in Kilobytes that will be the
maximum size of the message body. The size of each message body will be a
random number between 0 and the maximum size. Specify "0" if you
want just headers to test the connection rate. The default value is 10.
parameter is the number of threads that should be created to
attempt separate connections. A well configured mail server won't accept an
unlimited number of connections so make sure you don't specify a number larger
than the number your mail server is configured to handle. Also for sensible
results make sure that you don't use enough to make your server thrash as the
results won't be representative of real-world use. The default value is 1,
this default is not suitable for real tests, it's just for testing your
configuration. If you specify multiple server addresses for round-robin use
then this number of threads will be created per server, IE 4 servers and
will give 20 threads total.
parameter is for sending more than one
message per SMTP connection. The default value is "1". A value of -1
means to send an indefinite number of messages on one connection (~4 billion).
If a value > 1 is specified then the number sent on each connection is a
random number between 1 and the number specified. For simulating a mail server
connected directly to the net use a value of 2 or 3. For simulating a mail
server connected to a front-end relay use a large number. For testing for bugs
in your mail server use the value 0 and leave it running for a week. ;) A
value of 0 means to disconnect without sending any messages. Good for testing
parameter is for limiting the throughput of
the program. This is designed to be used when you want to test the performance
of other programs when the system is under load. The default is effectively
24000 messages per minute.
parameter specifies which local IP address(es) are used
to make the outbound connections. Specified in the same way as the remote
address. This is good for testing LocalDirectors or other devices that perform
differently depending on which source IP address was used.
The -L command specifies that LMTP is to be used instead of SMTP.
command turns on all logging. All message data received will be
logged. This will make it slow and it may not be able to saturate a fast
switch allows you to specify breakage strings. Currently the only
option is for Netscape mail server which strips spaces from the start of
subject lines. -b netscape
means to avoid leading spaces on subject
fields to not break Netscape. -b nonetscape
means to always put extra
space to test for the bug in Netscape and similar products. Some people say
that the RFCs are open to interpretation on this issue, I am interested to see
whether anyone else interprets it the way that Netscape does.
switch specifies the percentage of connections which are to use
Use 0 for no SSL, or 100 for always SSL, or any
number in between. Default is 0.
switch allows you to specify a debugging file base. From this base
one file is created for each thread (with a ':' and the thread number
appended), each file is used to log all IO performed by that thread for
switch is the same but creates a separate file for each connection
as well with an additional ':' appended followed by the connection number.
When testing mail servers please use domains defined in
http://www.rfc-editor.org/rfc/rfc2606.txt - example.com, example.net, and
are all good options. Please don't use anything related to a valid name, since
that will cause pain for you and others on the net.
- No Error
- Bad Parameters
- System Error, lack of memory or some other resource
This program, it's manual page, and the Debian package were written by Russell
The source is available from http://doc.coker.com.au/projects/postal/ .
See http://etbe.coker.com.au/category/benchmark for further information.