    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)