    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 transac-
           tion 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) program.

           Note: this is an unsupported test program. No attempt is made to  main-
           tain compatibility between successive versions.

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

           -b soft-bounce-reply
                  Use soft-bounce-reply for soft reject  responses.   The  default
                  reply is "450 4.3.0 Error: command failed".

           -B hard-bounce-reply
                  Use  hard-bounce-reply  for  hard reject responses.  The default
                  reply is "500 5.3.0 Error: command failed".

           -c     Display running counters that are updated whenever an SMTP  ses-
                  sion  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-template 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  cre-
                  ated 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 simultaneous connections
                  that smtp-sink will handle. This prevents the process from  run-
                  ning  out  of  file  descriptors.  Excess  connections will stay
                  queued in the TCP/IP stack.

           -M count
                  Terminate after receiving count messages.

           -n count
                  Terminate after count sessions.

           -p     Do not announce support for ESMTP command pipelining.

           -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 speci-
                  fied 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 spec-
                  ified 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  privileges.  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  message  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.

           -T windowsize
                  Override the default TCP window size. To work around broken  TCP
                  window scaling implementations, specify a value > 0 and < 65536.

           -u username
                  Switch to the specified user privileges after opening  the  net-
                  work  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 command.

           -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 connections, 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 follows:

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

           X-Mail-Args: text
                  The  arguments of the MAIL command that started this mail deliv-
                  ery 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  processing  soft-
                  ware.  This  three-line header marks the end of the headers pro-
                  vided 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-ran-
                         dom 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)