rabid(8) program to test POP server throughput.


rabid [-r max-connections-per-minute] [-p processes] [-l local-address] [-c messages-per-connection] [-a] [-s ssl-percentage] [-i imap-percentage] [-b qmail-pop] [-d download-percentage[:delete-percentage]] [-[z|Z] debug-file] [-u] pop-server user-list-filename


This manual page documents briefly the rabid, program.

It is designed to test the performance of POP email servers by reading all messages from randomly selected accounts as fast as possible. A future version will support rate limiting to provide a constant load (for testing SMTP servers).

The pop-server parameter specifies the IP address or name of the mail server that the mail is to downloaded from. If you want to specify a port other than port 110 then enclose the host address in square brackets and have the port address immidiately following. If you want a DNS lookup for every connection (for testing round-robin DNS) then immediately preceed the host address with a '+' character.

The user-list-filename is the name of a file which contains a list of user's email addresses and passwords. It will have one address per line and the password follows the address with a space to seperate.

The processes parameter is the number of processes that should be forked off to attempt seperate 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 max-connections-per-minute parameter is for limiting the number of connections that the program makes. 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 24000 connections per minute.

The messages-per-connection parameter specifies the maximum number of messages to download in a single POP session. The default is -1 (unlimited).

The local-address 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 -a 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 Ethernet link...

The -s switch specifies the percentage of connections which are to use TLS AKA SSL. Use 0 for no SSL, or 100 for always SSL, or any number in between. Default is 0.

The -i switch specifies the percentage of IMAP connections (default is POP).

The -b switch allows you to specify breakage strings. Currently the only option is for Qmail POP server which adds an extra blank line at the end of each message. -b qmail-pop means to not report this as an error.

-d download-percentage[:delete-percentage] allows you to specify what percentage of the messages are downloaded and what percentage of the downloaded messages are deleted. Default is 100%.

The -u switch causes the domain of user-names to be ignored. This allows you to have a single file with user-names and passwords which can be used by postal and rabid when using a server which doesn't accept a domain. By default postal will ignore the password field, rabid may or may not need the domain depending on the configuration of the POP server. The default is to use the domain (which is required if the same user is present in multiple domains), this switch causes the domain part to be stripped from the user-name field.

The -z 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 debugging purposes.

The -Z switch is the same but creates a separate file for each connection as well with an attitional ':' appended followed by the connection number.


Doesn't actually do SSL or IMAP yet.


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 Coker <[email protected]>.


The source is available from http://doc.coker.com.au/projects/postal/ .

See http://etbe.coker.com.au/category/benchmark for further information.