Provided by: postal_0.62.1build1_i386 bug


       postal - program to test SMTP mail server throughput.


       postal     [-m     maximum-message-size]     [-p     processes]     [-c
       messages-per-connection] [-r messages-per-minute]  [-s  ssl-percentage]
       [-l   local-address]   [-a]   [-b   [no]netscape]  [-[z|Z]  debug-file]
       smtp-server user-list-filename conversion-filename


       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.  A future
       version will support rate limiting to  provide  a  constant  load  (for
       testing POP or IMAP).

       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 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.
       To specify multiple servers  for  round-robin  use  then  seperate  the
       addresses with commas.

       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@domain).    If   a
       conversion-filename is specified then the names in this  file  will  be
       taken as a template and expanded to make the real names.

       The   conversion-filename   parameter   will  either  be  "-"  (for  no
       conversions) or the name of a file containing the conversions to  apply
       to  email  addresses.   Each  line  in the file can either be a comment
       (starting with "#")  or  is  to  contain  two  parameters.   The  first
       parameter is the regular expression.  For each email that is to be sent
       a randomly selected user-name  will  be  checked  against  all  regular
       expressions,  the first match will determine the translation that is to
       be applied.  The translation will be the second parameter on the  line.
       It will contain a number of "." characters specifying characters in the
       name that are not to be translated.   To  specify  the  translations  a
       range  of  characters  can  be  specified  inside square brackets.  For
       example to have every address starting with "a" have a  character  from
       "01234567890abc" as it’s second character and a character from "xyz" as
       it’s third character you would have the following: ^a .[0-9abc][xyz]

       The 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 between 0 and the maximum size.  Specify "0" if
       you  want  just headers to test the connection rate.  The default value
       is 10.

       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 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  processes will be created per
       server, IE 4 servers and -p5 will give 20 processes total.

       The messages-per-connection parameter is  for  sending  more  than  one
       message  per SMTP connection.  The default value is "1".  A value of -1
       means to send an indefinate 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  a

       The max-messages-per-minute 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.

       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  -b  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.

       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 -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.


       0      No Error

       1      Bad Parameters

       2      System Error, lack of memory or some other resource


       This  program, it’s manual page, and the Debian package were written by
       Russell Coker <>.