**smmapd**
**********

Sendmail and Postfix socket map daemon


Synopsis
========

   **smmapd** [ **-C** *config-file* ]  [ **-U** *uses* ] [ **-T** *timeout* ] [ **-D** ] [**-p**]


Description
===========

**smmapd** is a Sendmail and Postfix socket map daemon which is used
to verify that a Cyrus mailbox exists, that it is postable, it is not
blocked for the smmapd service in the userdeny database, and it is
under quota.  It accepts commands on its standard input and responds
on its standard output.  It MUST be invoked by master(8) with those
descriptors attached to a remote client connection.  The received
queries contain map name followed by mailbox, **smmapd** ignores the
map name. Queries with plus addressing, when *-p* is not passed,
return *OK* when the user has a mailbox with the name after plus,
otherwise the result is *NOTFOUND*.  Match for the mailbox after plus
is performed case-sensitive, for the address before the plus - depends
on *lmtp_downcase_rcpt*.

The use case is to verify in Sendmail or Postfix if the destination
exists, before accepting an email.  Then, if
*autocreate_sieve_folders* is set, but the folder does not exist yet,
**smmapd** will return *NOTFOUND*, unless *-p* is passed.  Another use
case is to do something in a Sieve script with emails, based on plus
addressing, without delivering them in the correspondent sub-folder.
To accept such emails, when the folder with the same name does not
exist, *-p* must be passed.

**smmapd** reads its configuration options out of the imapd.conf(5)
file unless specified otherwise by **-C**.


Options
=======

-C config-file

   Use the specified configuration file *config-file* rather than the
   default imapd.conf(5).

-U  uses

   The maximum number of times that the process should be used for new
   connections before shutting down.  The default is 250.

-T  timeout

   The number of seconds that the process will wait for a new
   connection before shutting down.  Note that a value of 0 (zero)
   will disable the timeout.  The default is 60.

-D

   Run external debugger specified in debug_command.

-p

   Skip plus addressing: everything from *+* until *@*.  When looking
   up the userdeny database, plus addressing is always skipped,
   irrespective of this option.


Examples
========

**smmapd** is commonly included in the SERVICES section of
cyrus.conf(5) like so:

   SERVICES {
       imap        cmd="imapd -U 30" listen="imap" prefork=0
       imaps       cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
       lmtpunix    cmd="lmtpd" listen="/var/run/cyrus/socket/lmtp" prefork=0 maxchild=20
       **smmap       cmd="smmapd" listen="/var/run/cyrus/socket/smmap" prefork=0**
       sieve       cmd="timsieved" listen="sieve" prefork=0
       notify      cmd="notifyd" listen="/var/run/cyrus/socket/notify" proto="udp" prefork=1
       httpd       cmd="httpd" listen=8080 prefork=1 maxchild=20
   }


Files
=====

/etc/imapd.conf, /etc/cyrus.conf


See Also
========

imapd.conf(5), cyrus.conf(5)
