postal(8)
π postal(8) β Postal π
okay so bestie, welcome to the postal(8) manual. This is the program that tests SMTP mail server throughput, and yes, it's giving "let's stress the mail server but make it cute." π¦β¨
β¨ NAME β¨
postal β program to test SMTP mail server throughput.
πΈ SYNOPSIS πΈ
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
π DESCRIPTION π
This manual page documents briefly the postal program.
It is designed to test the performance of SMTP email servers by sending random messages to the specified server as fast as possible. periodt. π
The smtp-server 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 localhost is used for connecting to the same machine. π
The user-list-filename 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 user@example.com). π«Ά
π the flags, one by one π
-f sender-fileβ thesender-filecontains a list of users that will be in theFrom:field and envelope sender of the messages. If it is not specified then theuser-list-filenamewill be used for the sender list. π-m maximum-message-sizeβ 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 between0and the maximum size. Specify"0"if you want just headers to test the connection rate. The default value is10.-M minimum-message-sizeβ it's in the synopsis, but the original page doesn't describe it any further. No cap, I'm not making up lore. It's listed, and that's the tea. π΅-t threadsβ 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 is1; 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-p5will give 20 threads total. π-c messages-per-connectionβ for sending more than one message per SMTP connection. The default value is"1". A value of-1means to send an indefinite number of messages on one connection (~4 billion). If a value> 1is specified then the number sent on each connection is a random number between1and the number specified. For simulating a mail server connected directly to the net use a value of2or3. 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 value0and leave it running for a week. ;) A value of0means to disconnect without sending any messages. Good for testing a LocalDirector. π-r messages-per-minuteβ also the max-messages-per-minute parameter, this 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 effectively24000messages per minute. β±οΈ-l local-addressβ 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. π-Lβ specifies that LMTP is to be used instead of SMTP. π«‘-aβ 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 Ethernet link... π΅βπ«-b [no]netscapeβ 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 netscapemeans to avoid leading spaces on subject fields to not break Netscape.-b nonetscapemeans 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. π-s ssl-percentageβ specifies the percentage of connections which are to use TLS AKA SSL. Use0for no SSL, or100for always SSL, or any number in between. Default is0. π-z debug-fileβ 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 debugging purposes. π-Z debug-fileβ same as-z, but creates a separate file for each connection as well with an additional':'appended followed by the connection number. πβ¨
π NOTES π
When testing mail servers please use domains defined in http://www.rfc-editor.org/rfc/rfc2606.txt - example.com, example.net, and example.org 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. do not do it. π
ββοΈ
π¦ RETURN CODES π¦
0β No Error1β Bad Parameters2β System Error, lack of memory or some other resource
π AUTHOR π
This program, it's manual page, and the Debian package were written by Russell Coker <russell@coker.com.au>. π
π AVAILABILITY π
The source is available from http://doc.coker.com.au/projects/postal/ .
See http://etbe.coker.com.au/category/benchmark for further information.
π«Ά SEE ALSO π«Ά
bhm(8),postal-list(8),rabid(8)
okay that's the whole page, bestie. This was version 0.70, by russell@coker.com.au, for the postal(8) manual. slay, stay safe, and don't spam real domains. πβ¨
π¦ where this page comes from
- debian bookworm: postal 0.76+nmu1
- debian trixie: postal 0.76+nmu2
- ubuntu jammy: postal 0.76+nmu1
- ubuntu noble: postal 0.76+nmu1build2
- ubuntu questing: postal 0.76+nmu2
- ubuntu resolute: postal 0.76+nmu2build1
- ubuntu stonking: postal 0.76+nmu2build1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms