SMTP-SINK(1)                                                      SMTP-SINK(1)

NAME
       smtp-sink - multi-threaded SMTP/LMTP test server

SYNOPSIS
       smtp-sink [options] [inet:][host]:port backlog

       smtp-sink [options] unix:pathname backlog

DESCRIPTION
       smtp-sink listens on the named host (or address) and port.
       It takes SMTP messages from the network  and  throws  them
       away.   The  purpose is to measure client performance, not
       protocol compliance.

       smtp-sink may also be  configured  to  capture  each  mail
       delivery  transaction  to  file.  Since disk latencies are
       large compared to network delays, this mode  of  operation
       can  reduce  the  maximal performance by several orders of
       magnitude.

       Connections can be accepted on IPv4 or IPv6 endpoints,  or
       on  UNIX-domain  sockets.   IPv4 and IPv6 are the default.
       This program is the complement of the smtp-source(1)  pro-
       gram.

       Note:  this  is an unsupported test program. No attempt is
       made to maintain  compatibility  between  successive  ver-
       sions.

       Arguments:

       -4     Support  IPv4  only. This option has no effect when
              Postfix is built without IPv6 support.

       -6     Support IPv6 only. This  option  is  not  available
              when Postfix is built without IPv6 support.

       -8     Do not announce 8BITMIME support.

       -a     Do not announce SASL authentication support.

       -A delay
              Wait  delay  seconds after responding to DATA, then
              abort prematurely with a 550 reply status.  Do  not
              read  further  input  from  the  client; this is an
              attempt to block the client before  it  sends  ".".
              Specify a zero delay value to abort immediately.

       -c     Display  running counters that are updated whenever
              an SMTP session ends, a QUIT command  is  executed,
              or when "." is received.

       -C     Disable XCLIENT support.

       -d dump-template
              Dump each mail transaction to a single-message file
              whose name is created by  expanding  the  dump-tem-
              plate via strftime(3) and appending a pseudo-random
              hexadecimal number (example: "%Y%m%d%H/%M." expands
              into  "2006081203/05.809a62e3").   If  the template
              contains "/" characters,  missing  directories  are
              created  automatically.  The message dump format is
              described below.

              Note: this option keeps one capture file  open  for
              every mail transaction in progress.

       -D dump-template
              Append  mail  transactions  to a multi-message dump
              file whose name is created by expanding  the  dump-
              template via strftime(3).  If the template contains
              "/" characters,  missing  directories  are  created
              automatically.    The   message   dump   format  is
              described below.

              Note: this option keeps one capture file  open  for
              every mail transaction in progress.

       -e     Do not announce ESMTP support.

       -E     Do not announce ENHANCEDSTATUSCODES support.

       -f command,command,...
              Reject  the  specified  commands  with a hard (5xx)
              error code.  This option implies -p.

              Examples of commands are CONNECT, HELO, EHLO, LHLO,
              MAIL,  RCPT,  VRFY,  DATA, ., RSET, NOOP, and QUIT.
              Separate command names by white  space  or  commas,
              and  use  quotes  to  protect  white space from the
              shell. Command names are case-insensitive.

       -F     Disable XFORWARD support.

       -h hostname
              Use hostname in the  SMTP  greeting,  in  the  HELO
              response,  and  in  the  EHLO response. The default
              hostname is "smtp-sink".

       -L     Enable LMTP instead of SMTP.

       -m count (default: 256)
              An upper bound on the maximal number of  simultane-
              ous  connections  that  smtp-sink will handle. This
              prevents the  process  from  running  out  of  file
              descriptors. Excess connections will stay queued in
              the TCP/IP stack.

       -n count
              Terminate after count sessions. This is for testing
              purposes.

       -p     Do  not announce support for ESMTP command pipelin-
              ing.

       -P     Change the server greeting so that  it  appears  to
              come through a CISCO PIX system. Implies -e.

       -q command,command,...
              Disconnect  (without  replying) after receiving one
              of the specified commands.

              Examples of commands are CONNECT, HELO, EHLO, LHLO,
              MAIL,  RCPT,  VRFY,  DATA, ., RSET, NOOP, and QUIT.
              Separate command names by white  space  or  commas,
              and  use  quotes  to  protect  white space from the
              shell. Command names are case-insensitive.

       -Q command,command,...
              Send a 421 reply and disconnect after receiving one
              of the specified commands.

              Examples of commands are CONNECT, HELO, EHLO, LHLO,
              MAIL, RCPT, VRFY, DATA, ., RSET,  NOOP,  and  QUIT.
              Separate  command  names  by white space or commas,
              and use quotes to  protect  white  space  from  the
              shell. Command names are case-insensitive.

       -r command,command,...
              Reject  the  specified  commands  with a soft (4xx)
              error code.  This option implies -p.

              Examples of commands are CONNECT, HELO, EHLO, LHLO,
              MAIL,  RCPT,  VRFY,  DATA, ., RSET, NOOP, and QUIT.
              Separate command names by white  space  or  commas,
              and  use  quotes  to  protect  white space from the
              shell. Command names are case-insensitive.

       -R root-directory
              Change the process root directory to the  specified
              location.   This  option requires super-user privi-
              leges. See also the -u option.

       -s command,command,...
              Log the named commands to syslogd.

              Examples of commands are CONNECT, HELO, EHLO, LHLO,
              MAIL,  RCPT,  VRFY,  DATA, ., RSET, NOOP, and QUIT.
              Separate command names by white  space  or  commas,
              and  use  quotes  to  protect  white space from the
              shell. Command names are case-insensitive.

       -S start-string
              An optional string that is prepended to  each  mes-
              sage  that  is written to a dump file (see the dump
              file format description  below).  The  following  C
              escape  sequences  are  supported:  \a  (bell),  \b
              (backslace), \f (formfeed), \n (newline), \r  (car-
              riage  return),  \t  (horizontal tab), \v (vertical
              tab), \ddd (up to three octal digits) and  \\  (the
              backslash character).

       -t timeout (default: 100)
              Limit the time for receiving a command or sending a
              response.  The time limit is specified in  seconds.

       -u username
              Switch to the specified user privileges after open-
              ing the network socket and optionally changing  the
              process  root  directory.  This  option is required
              when the process runs with  super-user  privileges.
              See also the -R option.

       -v     Show the SMTP conversations.

       -w delay
              Wait delay seconds before responding to a DATA com-
              mand.

       -W command:delay[:odds]
              Wait delay seconds before  responding  to  command.
              If  odds  is  also specified (a number between 1-99
              inclusive), wait for a random  multiple  of  delay.
              The  random  multiplier  is  equal to the number of
              times the program needs to roll a dice with a range
              of  0..99  inclusive,  before  the  dice produces a
              result greater than or equal to odds.

       [inet:][host]:port
              Listen on  network  interface  host  (default:  any
              interface) TCP port port. Both host and port may be
              specified in numeric or symbolic form.

       unix:pathname
              Listen on the UNIX-domain socket at pathname.

       backlog
              The maximum length the  queue  of  pending  connec-
              tions, as defined by the listen(2) system call.

DUMP FILE FORMAT
       Each  dumped  message  contains  a sequence of text lines,
       terminated with the newline  character.  The  sequence  of
       information is as follows:

       o      The optional string specified with the -S option.

       o      The   smtp-sink  generated  headers  as  documented
              below.

       o      The message header and body as  received  from  the
              SMTP client.

       o      An empty line.

       The  format  of the smtp-sink generated headers is as fol-
       lows:

       X-Client-Addr: text
              The client IP address without enclosing []. An IPv6
              address  is  prefixed  with "ipv6:". This record is
              always present.

       X-Client-Proto: text
              The client protocol:  SMTP,  ESMTP  or  LMTP.  This
              record is always present.

       X-Helo-Args: text
              The  arguments  of  the  last  HELO or EHLO command
              before this mail delivery transaction. This  record
              is  present  only if the client sent a recognizable
              HELO or EHLO command before the DATA command.

       X-Mail-Args: text
              The arguments of the MAIL command that started this
              mail  delivery  transaction. This record is present
              exactly once.

       X-Rcpt-Args: text
              The arguments of an RCPT command within  this  mail
              delivery  transaction. There is one record for each
              RCPT command, and they are in the order as sent  by
              the client.

       Received: text
              A  message  header for compatibility with mail pro-
              cessing software. This three-line header marks  the
              end  of  the  headers provided by smtp-sink, and is
              formatted as follows:

              from helo ([addr])
                     The HELO or EHLO command argument and client
                     IP address.  If the client did not send HELO
                     or EHLO,  the  client  IP  address  is  used
                     instead.

              by host (smtp-sink) with proto id random;
                     The  hostname  specified with the -h option,
                     the  client  protocol  (see   X-Client-Proto
                     above), and the pseudo-random portion of the
                     per-message capture file name.

              time-stamp
                     A time stamp as defined in RFC 2822.

SEE ALSO
       smtp-source(1), SMTP/LMTP message generator

LICENSE
       The Secure Mailer license must be  distributed  with  this
       software.

AUTHOR(S)
       Wietse Venema
       IBM T.J. Watson Research
       P.O. Box 704
       Yorktown Heights, NY 10598, USA

                                                                  SMTP-SINK(1)