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.

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

       -M count
              Terminate after receiving count messages.

       -n count
              Terminate after count sessions.

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

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