Provided by: dictd_1.13.1+dfsg-1build1_amd64 bug

NAME

       dictd - a dictionary database server

SYNOPSIS

       dictd [options]

DESCRIPTION

       dictd  is  a  server  for  the  Dictionary Server Protocol (DICT), a TCP transaction based query/response
       protocol that allows a client to access dictionary definitions from a set of natural language  dictionary
       databases.

       For  security  reasons,  dictd drops root permissions after startup.  If user dictd exists on the system,
       the daemon will run as that user, group dictd, otherwise it will run as  user  nobody,  group  nobody  or
       nogroup (depending on the operating system distribution).

       Since startup time is significant, the server is designed to run continuously, and should not be run from
       inetd(8).  (However, with a fast processor, it is feasible to do so.)

       Databases are distributed separately from the server.

       By  default,  dictd  assumes  that  the  index  files  are  sorted  alphabetically, and only alphanumeric
       characters from the 7-bit ASCII character set are used for search.  This default may be overridden  by  a
       header  in  the data file.  The only such features implemented at this time are the headers "00-database-
       allchars" which tells dictd that non-alphanumeric characters may also be  used  for  search,  the  header
       "00-database-utf8"  which  indicates that the database uses utf8 encoding, and the "00-database-8bit-new"
       which indicates that the database is encoded and  sorted  according  to  a  locale  that  uses  an  8-bit
       encoding.

BACKGROUND

       For  many  years,  the  Internet  community  has  relied  on the "webster" protocol for access to natural
       language definitions.  The webster protocol supports access to a single dictionary and (optionally) to  a
       single  thesaurus.  In recent years, the number of publicly available webster servers on the Internet has
       dramatically decreased.

       Fortunately, several freely-distributable dictionaries and lexicons have recently become available on the
       Internet.  However, these freely-distributable databases are not accessible via a uniform interface,  and
       are  not  accessible  from  a  single  site.  They are often small and incomplete individually, but would
       collectively provide an interesting and useful database of English words.  Examples  include  the  Jargon
       file,  the WordNet database, MICRA's version of the 1913 Webster's Revised Unabridged Dictionary, and the
       Free Online Dictionary of Computing.   (See  the  DICT  protocol  specification  (RFC)  for  references.)
       Translating  and non-English dictionaries are also becoming available (for example, the FOLDOC dictionary
       is being translated into Spanish).

       The webster protocol is not suitable for providing access  to  a  large  number  of  separate  dictionary
       databases,  and  extensions  to  the current webster protocol were not felt to be a clean solution to the
       dictionary database problem.

       The DICT protocol is designed  to  provide  access  to  multiple  databases.   Word  definitions  can  be
       requested, the word index can be searched (using an easily extended set of algorithms), information about
       the  server  can  be  provided (e.g., which index search strategies are supported, or which databases are
       available), and information about a database can be provided (e.g., copyright, citation, or  distribution
       information).  Further, the DICT protocol has hooks that can be used to restrict access to some or all of
       the databases.

       dictd(8)  is  a  server  that  implements the DICT protocol.  Bret Martin implemented another server, and
       several people (including Bret and myself) have implemented clients in a variety of languages.

OPTIONS

       -V or --version
              Display version information.

       --license
              Display copyright and license information.

       -h or --help
              Display help information.

       -v or --verbose or  -dverbose
              Be verbose.

       -c file or --config file
              Specify configuration file.  The default is /etc/dictd/dictd.conf , but  may  be  changed  in  the
              defs.h file at compile time (DICTD_CONFIG_FILE).

       -p port or --port port
              Overrides the keyword port in Global Settings Specification section of configuration file.

       -i or --inetd
              Communicate  on  standard  input/output, suitable for use from inetd.  Although, due to its rather
              large startup time, this daemon was not intended to run from inetd, with a fast  processor  it  is
              feasible to do so. This option also implies --fast-start.

       --pp prog
              Sets  a  preprocessor for configuration file.  like  m4 or  cpp .  See examples/dictd_complex.conf
              file from distribution. By default configuration file is parsed without preprocessor.

       --depth length
              Overrides the keyword depth in Global Settings Specification section of configuration file.

       --delay seconds
              Overrides the keyword delay in Global Settings Specification section of configuration file.

       --facility facility
              The same as syslog_facility keyword in Global Settings Specification of configuration files.

       -f or --force
              Force the daemon to start even if an instance of the daemon  is  already  running.   (This  is  of
              little  value unless a non-default port is specified with -p, since, if one instance is bound to a
              port, the second one fails when it can not bind to the port.)

       --limit children
              Overrides the keyword limit in Global Settings Specification section of configuration file.

       --listen-to host
              Overrides the keyword listen_to in Global Settings Specification section of configuration file.

       --address-family family
              Overrides the keyword address_family in Global Settings  Specification  section  of  configuration
              file.

       --locale locale
              Overrides the keyword locale in Global Settings Specification section of configuration file.

       -s     The same as syslog keyword in Global Settings Specification of configuration files.

       -L file or --logfile file
              The same as log_file keyword in Global Settings Specification of configuration files.

       --pid-file file
              The same as pid_file keyword in Global Settings Specification of configuration files.

       -m minutes  or --mark minutes
              Overrides the keyword timestamp in Global Settings Specification section of configuration file.

       --default-strategy strategy
              Overrides  the  keyword default_strategy in Global Settings Specification section of configuration
              file.

       --without-strategy strat1,strat2,...
              The same as without_strategy keyword in Global Settings Specification of configuration files.

       --add-strategy strategy_name:description
              The same as add_strategy keyword in Global Settings Specification of configuration files.

       --fast-start
              The same as fast_start keyword in Global Settings Specification of configuration files.

       --without-mmap
              The same as without_mmap keyword in Global Settings Specification of configuration files.

       --stdin2stdout
              When applied with --inetd, each command obtained from stdin is output to stdout.  This  option  is
              useful for debugging.

       -l option or --log option
              The same as log_option keyword in Global Settings Specification of configuration files.

       -d option
              The same as debug_option keyword in Global Settings Specification of configuration files.

CONFIGURATION FILE

       Introduction
              The  configuration file defaults to /etc/dictd/dictd.conf but can be specified on the command line
              with the -c option (see above).

              The configuration file is read into memory at startup, and is not referenced again by dictd unless
              a signal 1 (SIGHUP) is received, which will cause dictd to reread the configuration file.

              The file is divided into sections.  The Access Section should come first, followed by the Database
              Section, and the User Section.  The Database Section is required; the  others  are  optional,  but
              they must be in the order listed here.

       Syntax The  following  keywords  are valid in a configuration file: access, allow, deny, group, database,
              data, index, filter, prefilter, postfilter, name, include, user,  authonly,  site.   Keywords  are
              case  sensitive.   String  arguments  that  contain  spaces should be surrounded by double quotes.
              Without quoting, strings may contain alphanumeric characters and _, -, ., and *, but  not  spaces.
              Strings can be continued between lines.  \", \\, \n, \<NL> are treated as double quote, backslash,
              new line and no symbol respectively.  Comments start with # and extend to the end of the line.

       Global Settings Section

              global { global settings specification }
                     Used to set global dictd setting such as log file, syslog facility, locale and so on.

              EXAMPLE:
                     See examples/dictd4.conf file from the distribution.

       Access Section

              access { access specification }
                     This  section  contains  access  restrictions  for  the  server  and  all  of the databases
                     collectively.  Per-database control is specified in the Database Section.

              EXAMPLE:
                     See examples/dictd3.conf file from the distribution.

       Database Section

              database string { database specification }
                     The string specifies the name of the database (e.g., wn or web1913).  (This is an arbitrary
                     name selected by the administrator, and is not necessarily related to the file name or  any
                     name  listed  in  the data file.  A short, easy to type name is often selected for easy use
                     with dict -d.)

                     EXAMPLE: See examples/dictd*.conf files from the distribution.

                     NOTE: If the files specified in the database specification do  not  exist  on  the  system,
                     dictd may silently fail.

              database_virtual string { virtual database specification }
                     This section specifies the virtual database.  The string specifies the name of the database
                     (e.g., en-ru or fren).

                     EXAMPLE:  See  examples/dictd_virtual.conf  or  examples/dictd_complex.conf  files from the
                     distribution.

              database_plugin string { plugin specification }
                     This section specifies the plugin.  The string specifies the name of the database.

                     EXAMPLE: See examples/dictd_plugin_dbi.conf or examples/dictd_complex.conf files  from  the
                     distribution.

              database_mime string { mime specification }
                     Traditionally, databases created for dictd contained plain text only because dictd releases
                     before 1.10.0 didn't have full support of OPTION MIME option (consult with RFC-2229).  This
                     section  describes  the  special  database  which  behaves differently depending on whether
                     OPTION MIME command was received from client or was not, i.e. the database created by  this
                     section  allows  one  to  return  to  the client either a plain text or specially formatted
                     content depending on whether DICT client supports (or wants to receive) MIMEized content or
                     doesn't.  The string specifies the name of the database.

                     NOTE: All this is about DEFINE command only.  MATCH, SHOW DB, SHOW STRAT, SHOW  INFO,  SHOW
                     SERVER and HELP commands return texts prepended with empty line only.

                     EXAMPLE: See examples/dictd_mime.conf file from the distribution.

              database_exit
                     Excludes  following  databases  from  the '*' database.  By default '*' means all databases
                     available.  Look at 'examples/dictd_virtual.conf' file for example configuration.

                     NOTE: If you use 'virtual' dictionaries, you should use this directive, otherwise you  will
                     search the same dictionary twice.

              User Section

                     user string string
                            The  first string specifies the username, and the second string specifies the shared
                            secret for this username.  When the AUTH command is used, the  client  will  provide
                            the  username  and  a  hashed  version  of  the shared secret.  If the shared secret
                            matches, the user is said to have authenticated, and will have access  to  databases
                            whose  access specifications allow that user (by name, or by wildcard).  If present,
                            this section must appear last in the configuration file.  There  may  be  many  user
                            entries.   The  shared  secret should be kept secret, as anyone who has access to it
                            can access the shared databases (assuming access is not denied by domain name).

              Access Specification
                     Access specifications may occur in the Access Section or  in  the  Database  Section.   The
                     access specification will be described here.

                     For  allow,  deny,  and  authonly,  a  star (*) may be used as a wild card that matches any
                     number of characters.  A question mark (?) may be used as a wildcard that matches a  single
                     character.  For example, 10.0.0.* and *.edu are valid strings.

                     Further,  a range of IP addresses and an IP address followed by a netmask may be specified.
                     For example, 10.0.0.0:10.0.0.255, 10.0.0.0/24, and 10.0.0.* all specify the same  range  of
                     IP  numbers.   Notation cannot be combined on the same line.  If the notation does not make
                     sense, access will be denied by default.  Use the --debug  auth  option  to  debug  related
                     problems.

                     Note  that  these specifications take only one string per specification line.  However, you
                     can have multiple lines of each type.

                     The syntax is as follows:

                     allow string
                            The string specifies a domain name or IP address which  is  allowed  access  to  the
                            server  (in  the  Access  Section) or to a database (in the Database Section).  Note
                            that more than one string is not permitted for a single "allow" line, but more  than
                            one "allow" lines are permitted in the configuration file.

                     deny string
                            The  string  specifies  a  domain  name  or IP address which is denied access to the
                            server (in the Access Section) or to a database (in  the  Database  Section).   Note
                            that  if  reverse  DNS  is  not  working,  then  only the IP number will be checked.
                            Therefore, it is essential to deny networks based on IP number, since a denial based
                            on domain name may not always be checked.

                     authonly string
                            This form is only useful in the Access Section.  The string specifies a domain  name
                            or IP address which is allowed access to the server but not to any of the databases.
                            All commands are valid except DEFINE, MATCH, and SHOW DB.  More specifically AUTH is
                            a valid command, and commands which access the databases are not allowed.

                     user string
                            This  form  is only useful in the Database Section.  The string specifies a username
                            that is allowed to access this database after a successful AUTH command is executed.

       Global Settings Specification
              This section describes the following parameters:

              port string_or_number
                     Specifies the port or service name (e.g., 2628).  The default is 2628, as specified in  the
                     DICT   Protocol   RFC,   but   may   be   changed  in  the  defs.h  file  at  compile  time
                     (DICT_DEFAULT_SERVICE).

              site string
                     Used to specify the filename for the site information file, a flat text file which will  be
                     displayed in response to the SHOW SERVER command.

                     EXAMPLE: See examples/dictd4.conf file from the distribution.

              site_no_banner boolean
                     By  default  SHOW  SERVER  command outputs information about dictd version and an operating
                     system type.  This option disables this.

              site_no_uptime boolean
                     By default SHOW SERVER command outputs information about uptime of  dictd  ,  a  number  of
                     forks since startup and forks per hour.  This option disables this.

              site_no_dblist boolean
                     By  default  SHOW  SERVER  command  outputs internal information about databases, such as a
                     number of headwords, index size and so on.  This option disables this.

              delay number
                     Specifies the number of seconds a client may be idle  before  the  server  will  close  the
                     connection.   Idle  time is defined to be the time the server is waiting for input and does
                     not include the time the server spends searching the database. The default is 0 seconds (no
                     limit), but may be changed in the defs.h file at compile time (DICT_DEFAULT_DELAY).

                     NOTE: Setting delay option disables limit_time option. Only one of them (last specified  in
                     dictd.conf ) is in effect.

                     NOTE:  Connections  are  closed without warning since no provision for premature connection
                     termination is specified in the DICT protocol RFC.

              depth number
                     Specify the queue length for listen(2).  Specifies the number of pending socket connections
                     which are queued by the operating system.  Some operating systems may silently  limit  this
                     value to 5 (older BSD systems) or 128 (Linux).  The default is 10 but may be changed in the
                     defs.h file at compile time (DICT_QUEUE_DEPTH).

              limit_childs number
                     Specifies the number of daemons that may be running simultaneously.  Each daemon services a
                     single connection.  If the limit is exceeded, a (serialized) connection will be made by the
                     server  process,  and  a response code 420 (server temporarily unavailable) will be sent to
                     the client.  This parameter should be adjusted to prevent the  server  machine  from  being
                     overloaded  by  dict  clients,  but  should  not be set so low that many clients are denied
                     useful connections. The default is 100, but may be changed in the defs.h  file  at  compile
                     time (DICT_DAEMON_LIMIT_CHILDS).

              limit number
                     Synonym for limit_childs.  For backward compatibility only.

              limit_matches number
                     Specifies  the maximum number of matches that can be returned by MATCH query. Zero means no
                     limit. The default is 2000.

              limit_definitions number
                     Specifies the maximum number of definitions that can be  returned  by  DEFINE  query.  Zero
                     means no limit. The default is 200.

              limit_time number
                     Specifies  the  number  of  seconds  a client may talk to the server before the server will
                     close the connection.  The default is 600 seconds (10 minutes), but may be changed  in  the
                     defs.h file at compile time (DICT_DEFAULT_LIMIT_TIME).

                     NOTE:  Setting limit_time option disables delay option. Only one of them (last specified in
                     dictd.conf ) is in effect.

                     NOTE: Connections are closed without warning since no provision  for  premature  connection
                     termination is specified in the DICT protocol RFC.

              limit_queries number
                     Specifies  the number of queries (MATCH, DEFINE, SHOW DB etc.)  that client may send to the
                     server before the server will close the connection.  Zero means no limit.  The  default  is
                     2000, but may be changed in the defs.h file at compile time (DICT_DEFAULT_LIMIT_QUERIES).

              timestamp number
                     How  often  a timestamp should be logged (int minutes).  (This is effective only if logging
                     has been enabled with the -s or -L option, or with a debugging option.)

              log_option option
                     Specify a logging option.  This is effective only if logging has been enabled with  the  -s
                     or  -L option or in configuration file, or logging to the console has been activated with a
                     debugging option (e.g., --debug nodetach.  Only one option may be set with each  invocation
                     of  this  option; however, multiple invocations of this option may be made in configuration
                     file or dictd command line.  For instance:
                     dictd -s --log stats --log found --log notfound
                     is a valid command line, and sets three logging options.

                     Some of the more verbose logging options are used primarily for debugging the server  code,
                     and are not practical for normal use.

                     server Log server diagnostics.  This is extremely verbose.

                     connect
                            Log all connections.

                     stats  Log all children terminations.

                     command
                            Log all commands.  This is extremely verbose.

                     client Log results of CLIENT command.

                     found  Log all words found in the databases.

                     notfound
                            Log all words not found in the databases.

                     timestamp
                            When  logging  to a file, use a full timestamp like that which syslog would produce.
                            Otherwise, no timestamp is made, making the files shorter.

                     host   Log name of foreign host.

                     auth   Log authentication failures.

                     min    Set a minimal number of options.  If  logging  is  activated  (to  a  file,  or  via
                            syslog),  and  no options are set, then the minimal set of options will be used.  If
                            options are set, then only those options specified will be used.

                     all    Set all of the options.

                     none   Clear all of the options.

                     To facilitate location of interesting information in the log file, entries are marked  with
                     initial letters indicating the class of the line being logged:

                     I      Information  about  the server, connections, or termination statistics.  These lines
                            are generally not designed to be parsed automatically.

                     E      Error messages.

                     C      CLIENT command information.

                     D      Definitions found in the databases searched.

                     M      Matches found in the database searched.

                     N      Matches which were not found in the databases searched.

                     T      Trace of exact line sent by client.

                     A      Authentication information.

                     To preserve anonymity of the client, do not use the connect or host options.   Clients  may
                     or  may  not  send  host information using the CLIENT command, but this should be an option
                     that is selectable on the client side.

              debug_option string
                     Activate a debugging  option.   There  are  several,  all  of  which  are  only  useful  to
                     developers.    They  are  documented  here  for  completeness.   A  list  can  be  obtained
                     interactively by using -d with an illegal option.

                     verbose
                            The same as -v or --verbose.  Adds verbosity to other options.

                     scan   Debug the scanner for the configuration file.

                     parse  Debug the parser for the configuration file.

                     search Debug the character folding and binary search routines.

                     init   Report database initialization.

                     port   Log client-side port number to the log file.

                     lev    Debug Levenshtein search algorithm.

                     auth   Debug the authorization routines.

                     nodetach
                            Do not detach as a background process.  Implies that a copy of  the  log  file  will
                            appear on the standard output.

                     nofork Do  not fork daemons to service requests.  Be a single-threaded server.  This option
                            implies nodetach, and is most useful for using a debugger to find the point at which
                            daemon processes are dumping core.

                     alt    Debugs altcompare in index.c.

              locale string
                     Specifies the locale used for searching.  If no locale is  specified,  the  "C"  locale  is
                     used.   The locale used for the server should be the same as that used for dictfmt when the
                     database was built (specifically, the locale under which the index was sorted). The  locale
                     should  be  specified  for  both  8-bit and UTF-8 formats. If locale contains utf8 or utf-8
                     substring, UTF-8 format is expected.  Note that if your database is not in ASCII7 or  UTF-8
                     format, then the dictd server will not be compliant to RFC 2229.

                     NOTE  If  utf-8  or  8-bit  dictionaries  are  included  in the configuration file, and the
                     appropriate --locale has not been specified, dictd will fail to start.  This  implies  that
                     dictd will not run with both utf-8 and 8-bit dictionaries in the configuration file.

              add_strategy strategy_name description
                     Adds strategy strategy_name with the description description.  This new search strategy may
                     be implemented with a help of plugins.  Both strategy_name and description are strings.

              default_strategy string
                     Set the server's default search strategy for MATCH search type.  The compiled-in default is
                     'lev'.   It  is  also  possible to set default strategy per database.  See default_strategy
                     keyword in Database specification section.

              disable_strategy string
                     Disable specified strategies.  By default all implemented search  strategies  are  enabled.
                     It  is  also  possible to disable strategies per database.  See disable_strategy keyword in
                     Database specification section.

              listen_to host
                     Local host name or IP address for bind.  If unspecified  or  *,  dictd  will  bind  to  all
                     interfaces.  Otherwise, dictd will bind to this address only.

              address_family family
                     If 4, address family is IPv4 (the default), if 6, address family is IPv6.

              syslog string
                     Log using the syslog(3) facility.

              syslog_facility string
                     Specifies the syslog facility to use.  The use of this option implies the -s option to turn
                     on logging via syslog.  When the operating system libraries support SYSLOG_NAMES, the names
                     used  for  this  option should be those listed in syslog.conf(5).  Otherwise, the following
                     names are used (assuming the particular facility is defined in  the  header  files):  auth,
                     authpriv,  cron,  daemon,  ftp,  kern, lpr, mail, news, syslog, user, uucp, local0, local1,
                     local2, local3, local4, local5, local6, and local7.

              log_file string
                     Specify the file for logging.  The filename specified is recomputed on each use  using  the
                     strftime(3)  call.   For  example,  a  filename ending in ".%Y%m%d" will write to log files
                     ending in the year, month, and date that the log entry was written.
                     NOTE: If dictd does not have write permission for this file, it will silently fail.

              pid_file string
                     The specified filename will be created to contain the process id of the main dictd process.
                     The default is /var/run/dictd.pid

              fast_start
                     By default, dictd creates (in memory) additional index to make  the  search  faster.   This
                     option disables this behaviour and makes startup faster.

              without_mmap
                     do  not  use  the  mmap(2)  function  and  read entire files into memory instead.  Use this
                     option, if you know exactly what you are doing.

       Database Specification
              The database specification describes the database:

              data string
                     Specifies the filename for the flat text database.  If the filename does not begin with '.'
                     or '/', it is prepended with $datadir/. It is a compile time option. You  can  change  this
                     behaviour by editing Makefile or running ./configure --datadir=...

              index string
                     Specifies  the filename for the index file.  Path matter is similar to that described above
                     in "data" option .

              index_suffix string
                     This is optional index file to make 'suffix' search strategy faster (binary search).  It is
                     generated  by  'dictfmt_index2suffix'.   Run   "dictfmt_index2suffix   --help"   for   more
                     information.  Path matter is similar to that described above in "data" option .

              index_word string
                     This  is  optional index file to make 'word' search strategy faster (binary search).  It is
                     generated by 'dictfmt_index2word'. Run "dictfmt_index2word --help"  for  more  information.
                     Path matter is similar to that described above in "data" option .

              prefilter string
                     Specifies  the   prefilter  command.  When  a chunk of the compressed database is  read, it
                     will be filtered  with  this filter before  being  decompressed.   This  may  be   used  to
                     provide   some  additional  compression   that  knows about the data and can provide better
                     compression than the LZ77 algorithm used by zlib.

              postfilter string
                     Specifies the postfilter command.  When a chunk of the compressed database is read, it will
                     be filtered with this filter before the offset and length for the entry are used to  access
                     data.  This is provided for symmetry with the prefilter command, and may also be useful for
                     providing additional database compression.

              filter string
                     Specifies  the  filter command.  After the entry is extracted from the database, it will be
                     filtered with this filter.  This may be used to provide formatting for the entry (e.g., for
                     html).

              name string
                     Specifies the short name of the database (e.g., "1913 Webster's").  If  the  string  begins
                     with  @, then it specifies the headword to look up in the dictionary to find the short name
                     of the database.  The default is "@00-database-short", but  this  may  be  changed  in  the
                     defs.h file at compile time (DICT_SHORT_ENTRY_NAME).

              info string
                     Specifies  the  information about database.  If the string begins with @, then it specifies
                     the  headword  to  look  up  in  the  dictionary  to  find  information.   The  default  is
                     "@00-database-info",  but  this  may  be  changed  in  the  defs.h  file  at  compile  time
                     (DICT_INFO_ENTRY_NAME).

              invisible
                     Makes dictionary invisible to the clients i.e. this dictionary will not  be  recognized  or
                     shown by DEFINE, MATCH, SHOW INFO, SHOW SERVER and SHOW DB commands. If some definitions or
                     matches are found in invisible dictionary, the name of the upper visible virtual dictionary
                     is  returned.   Dictionaries  '*'  and  '!'  don't include invisible ones.  NOTE: Invisible
                     dictionaries are completely inaccessible (and invisible) to  the  client  unless  they  are
                     included  to the virtual or MIME dictionary (See database_virtual or database_mime database
                     sections).

              disable_strategy string
                     Disables the specified strategy for database.  This may be  useful  for  slow  dictionaries
                     (plugins)  or  for  dictionaries  included  to  virtual  ones.   For  an  example  see file
                     examples/dictd_complex.conf.

              default_strategy string
                     Specifies the strategy which will be used if the database is accessed  using  the  strategy
                     '.'.  I.e. this directive is the way to set the preferred search strategy per database. For
                     example,  instead of strategy lev , the strategy word may be preferred for databases mainly
                     containing the multiword phrases but the single words.

       Virtual Database Specification
              The virtual database specification describes the virtual database:

              database_list string
                     Specifies a list of databases which are included into the virtual database.  Database names
                     are in the string and are separated by comma.

              name string
                     Specifies the short name of the database. See database specification

              info string
                     Specifies the information about database. See database specification

              invisible
                     Makes dictionary invisible to the clients. See database specification

              disable_strategy string
                     Disables the specified strategy for database.  See database specification

       Plugin Specification

              plugin string
                     Specifies a filename of the plugin.

              data string
                     Specifies data for initializing plugin.

              name string
                     Specifies the short name of the database.  See Database Specification for more information.

              info string
                     Specifies the information about database.  See Database Specification for more information.

              invisible
                     Makes  dictionary  invisible  to  the  clients.   See  Database  Specification   for   more
                     information.

              disable_strategy string
                     Disables  the  specified  strategy  for  database.   See  Database  Specification  for more
                     information.

              default_strategy string
                     Sets the default search  strategy  for  database.   See  Database  Specification  for  more
                     information.

       Mime Specification

              dbname_nomime string
                     Specifies the real database name which is used in case OPTION MIME command was NOT received
                     from a client.

              dbname_mime string
                     Specifies  the  real  database  name which is used in case OPTION MIME command WAS received
                     from a client.  A necessary MIME header is set while creating a database.   See  dictfmt(1)
                     for option --mime-header.

              name string
                     Specifies the short name of the database.  See Database Specification for more information.

              info string
                     Specifies the information about database.  See Database Specification for more information.

              invisible
                     Makes   dictionary   invisible  to  the  clients.   See  Database  Specification  for  more
                     information.

              disable_strategy string
                     Disables the  specified  strategy  for  database.   See  Database  Specification  for  more
                     information.

              default_strategy string
                     Sets  the  default  search  strategy  for  database.   See  Database Specification for more
                     information.

       include string
              The text of the file "string" (usually a database specification) will be read as if it appeared at
              this location in the configuration file.  Nested includes are not permitted.

DETERMINATION OF ACCESS LEVEL

       When a client connects, the global access specification is  scanned,  in  order,  until  a  specification
       matches.   If  no  access specification exists, all access is allowed (e.g., the action is the same as if
       "allow *" was the only item in the specification).  For each item, both the hostname and IP are  checked.
       For example, consider the following access specification:
              allow 10.42.*
              authonly *.edu
              deny *
       With  this  specification,  all  clients  in  the  10.42  network  will be allowed access to unrestricted
       databases; all clients from *.edu sites will be allowed to authenticate, but will be denied access to all
       databases, even those which are otherwise unrestricted; and all other clients will have their  connection
       terminated immediately.  The 10.42 network clients can send an AUTH command and gain access to restricted
       databases.   The  *.edu  clients must send an AUTH command to gain access to any databases, restricted or
       unrestricted.

       When the AUTH command is sent, the access list for each database is scanned, in order, just as the global
       access list is scanned.  However, after authentication, the  client  has  an  associated  username.   For
       example, consider the following access specification:
              user u1
              deny *.com
              user u2
              allow *
       If  the client authenticated as u1, then the client will have access to this database, even if the client
       comes from a *.com site.  In contrast, if the client authenticated as  u2,  the  client  will  only  have
       access  if  it  does  not  come  from a *.com site.  In this case, the "user u2" is redundant, since that
       client would also match "allow *".

       Warning: Checks are performed for domain names and for IP addresses.   However,  if  reverse  DNS  for  a
       specific  site is not working, it is possible that a domain name may not be available for checking.  Make
       sure that all denials use IP addresses.  (And consider a future enhancement: if  a  domain  name  is  not
       available,  should  denials  that  depend on a domain name match anything?  This is the more conservative
       viewpoint, but it is not currently implemented.)

SEARCH ALGORITHMS

       The DICT standard specifies a few search algorithms that must be implemented, and permits  others  to  be
       supported  on  a  server-dependent  basis.  The following search strategies are supported by this server.
       Note that all strategies are case insensitive.  Most ignore non-alphanumeric, non-whitespace characters.

       exact  An exact match.  This algorithm uses a binary search and is one of the fastest  search  algorithms
              available.

       lev    The  Levenshtein  algorithm  (string edit distance of one).  This algorithm searches for all words
              which are within an edit distance of one from the target word.   An  "edit"  means  an  insertion,
              deletion,  or transposition.  This is a rapid algorithm for correcting spelling errors, since many
              spelling errors are within a Levenshtein distance of one from the original word.

       prefix Prefix match.  This algorithm also uses a binary search and is very fast.

       nprefix
              Like prefix but returns the specified range of matches. For example, when prefix strategy  returns
              1000 matches, you can get only 100 ones skipping the first 800 matches.  This is made by specified
              these  limits  in  a  query  like  this:  800#100#app, where 800 is skip count, 100 is a number of
              matches you want to get and "app" is your query.  This  strategy  allows  one  to  implement  DICT
              client  with fast autocompletion (although it is not trivial) just like many standalone dictionary
              programs do.

              NOTE: If you access the dictionary "*" (or virtual one) with nprefix strategy, the same  range  is
              set for each database in it, but globally for all matches found in all databases.

              NOTE:  In  case you access non-english dictionary the returned matches may be (and mostly will be)
              NOT ordered in alphabetic order.

       re     POSIX 1003.2 (modern) regular expression search.  Modern regular expressions are the ones used  by
              egrep(1).   These  regular  expressions  allow  predefined  character  classes (e.g., [[:alnum:]],
              [[:alpha:]], [[:digit:]], and [[:xdigit:]] are useful for this application); uses  *  to  match  a
              sequence  0  or more matches of the previous atom; uses + to match a sequence of 1 or more matches
              of the previous atom; uses ? to match a sequence of 0 or 1 matches of the previous atom; used ^ to
              match the beginning of a word, uses $ to match the end of a word, and allows nested  subexpression
              and  alternation  with  ()  and |.  For example, "(foo|bar)" matches all words that contain either
              "foo" or "bar".  To match these special characters, they must be quoted with two backslashes  (due
              to the quoting characteristics of the server).  Warning: Regular expression matches can take 10 to
              300 times longer than substring matches.  On a busy server, with many databases, this can required
              more than 5 minutes of waiting time, depending on the complexity of the regular expression.

       regexp Old  (basic) regular expressions.  These regular expressions don't support |, +, or ?.  Groups use
              escaped parentheses.  While modern regular expressions are generally easier to use, basic  regular
              expressions  have  a  back  reference  feature.   This can be used to match a second occurrence of
              something that was already matched.  For example, the following expression finds  all  words  that
              begin and end with the same three letters:
                  ^\\(...\\).*\\1$

              Note  the use of the double backslashes to escape the special characters.  This is required by the
              DICT protocol string specification (a single backslash quotes the next character -- we use two  to
              get  a  single backslash through to the regular expression engine).  Warning: Note that the use of
              backtracking is even slower than the use of general regular expressions.

       soundex
              The Soundex algorithm, a classic algorithm for finding words that sound  similar  to  each  other.
              The  algorithm encodes each word using the first letter of the word and up to three digits.  Since
              the first letter is known, this search is relatively fast, and it sometimes  good  for  correcting
              spelling errors when the Levenshtein algorithm doesn't help.

       substring
              Match  a  substring  anywhere  in the headword.  This search strategy uses a modified Boyer-Moore-
              Horspool algorithm.  Since it must search the whole index file, it is not as fast as the exact and
              prefix matches.

       suffix Suffix match.  This search strategy also uses a modified Boyer-Moore-Horspool algorithm, and is as
              fast as the substring search.   If  the  optional  index_suffix  string  file  is  listed  in  the
              configuration file this search is much faster.

       word   Match any single word, even if part of a multi-word entry.  If the optional index_word string file
              is listed in the configuration file this search strategy works much faster.

       first  Match the first word that begins a multi-word entry.

       last   Match  the  last  word  that ends a multi-word entry.  If the optional index_suffix string file is
              listed in the configuration file this search strategy works much faster.

DATABASE FORMAT

       Databases for dictd are distributed separately.  A database consists of two files.  One is  a  flat  text
       file, the other is the index.

       The  flat text file contains dictionary entries (or any other suitable data), and the index contains tab-
       delimited tuples consisting of the headword, the byte offset at which this entry begins in the flat  text
       file,  and  the  length  of the entry in bytes.  The offset and length are encoded using base 64 encoding
       using the 64-character subset of International Alphabet IA5 discussed in RFC  1421  (printable  encoding)
       and  RFC 1522 (base64 MIME).  Encoding the offsets in base 64 saves considerable space when compared with
       the usual base 10 encoding, while still permitting tab characters (ASCII 9) to  be  used  for  delimiting
       fields in a record.  Each record ends with a newline (ASCII 10), so the index file is human readable.

       Some headwords are used by dictd especially

       00-database-info  Contains  the information about database which is returned by SHOW INFO command, unless
       it is specified in the configuration file.

       00-database-short Contains the short name of the database which is returned by SHOW DB command, unless it
       is specified in the configuration file.  See dictfmt -s.

       00-database-url URL where original dictionary sources were obtained from.  See dictfmt -u.  This headword
       is not used by dictd

       00-database-utf8 Presents if dictionary is encoded using UTF-8.  See dictfmt --utf8

       00-database-8bit-new Presents if dictionary is encoded using 8-BIT  character  set  (not  ASCII  and  not
       UTF8).  See dictfmt --locale.

       The  flat text file may be compressed using gzip(1) (not recommended) or dictzip(1) (highly recommended).
       Optimal speed will be obtained using an uncompressed file.  However, the gzip compression algorithm works
       very well on plain text, and can result in space savings typically between 60  and  80%.   Using  a  file
       compressed  with  gzip(1)  is  not  recommended,  however,  because random access on the file can only be
       accomplished by serially decompressing the whole file, a process which is prohibitively slow.  dictzip(1)
       uses the same compression algorithm and file format as does gzip(1), but provides a  table  that  can  be
       used  to  randomly  access  compressed  blocks  in  the  file.  The use of 50-64kB blocks for compression
       typically degrades compression by less than 10%, while maintaining acceptable random access  capabilities
       for all data in the file.  As an added benefit, files compressed with dictzip(1) can be decompressed with
       gzip(1)  or  zcat(1).  (Note: recompressing a dictzip'd file using, for example, znew(1) will destroy the
       random access characteristics of the file.  Always compress data files using dictzip(1).)

SIGNALS

       SIGHUP causes dictd to reread configuration file and reinitialize databases.

       SIGUSR1 causes dictd to unload databases. Then dictd  returns  420  status  (instead  of  220).  To  load
       databases  again,  send SIGHUP signal. Because database files are mmap'ed(2) , it is impossible to update
       them while dictd is running.  So, if you need to update database files  and  reread  configuration  file,
       first,  send  SIGUSR1  signal  to dictd to unload databases, update files, and then send SUGHUP signal to
       load them again.

COPYING

       The main source files for the dictd server and the dictzip compression program were written by Rik  Faith
       (faith@dict.org)  and  are distributed under the terms of the GNU General Public License.  If you need to
       distribute under other terms, write to the author.

       The main libraries used by these programs (zlib, regex, libmaa) are distributed under different terms, so
       you may be able to use the libraries for applications which are incompatible with the GPL --  please  see
       the  copyright  notices  and  license  information that come with the libraries for more information, and
       consult with your attorney to resolve these issues.

BUGS

       The regular expression searches do not ignore non-whitespace, non-alphanumeric characters as do the other
       searches.  In practice, this isn't much of a problem.

WARNINGS

       Conformance of regular expressions (used by 're' and 'regexp' search strategies) to ERE and  BRE  depends
       on library you build dictd with.  Whether 're' and 'regex' strategies support utf8 depends on library you
       build dictd with.

FILES

       /etc/dictd/dictd.conf
              dictd configuration file

       /usr/sbin/dictd
              dictd daemon itself

       /var/run/dictd.pid
              File for storing pid of dictd daemon

       /usr/share/dictd
              The default directory for dictd databases (.index and .dict[.dz] files)

SEE ALSO

       examples/dictd*.conf, dictfmt(1), dict(1), dictzip(1), gunzip(1), zcat(1), webster(1), RFC 2229

                                                  29 March 2002                                         DICTD(8)