**fud**
*******

Provide information about user mailboxes


Synopsis
========

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


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

**fud** is a long lived datagram daemon started from master that
provides information about when a user last read their mail, when mail
last arrived in a user’s mailbox, and how many messages are recent for
that user.

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

**fud** will automatically proxy any and all FUD requests to the
appropriate backend server if it is running on a Cyrus Murder frontend
machine.

To set up the FUD daemon, add this to your cyrus.conf:

"fud           cmd="fud" listen="fud" prefork=1 proto="udp""

and to /etc/services:

"fud             4201/udp                        # Cyrus IMAP FUD
Daemon"


Client
------

There is no specific FUD client. This shows how one might access FUD.

   #!/usr/bin/perl

   use Socket;

   print( "Enter fud hostname: " );
   $hostname = <>;
   chomp( $hostname );

   print( "Enter username to query: " );
   $username = <>;
   chomp( $username );

   socket( FUD, PF_INET, SOCK_DGRAM, getprotobyname( "udp" ) )
      or die( "failed to create udp socket: $!" );

   $ipaddr = inet_aton( $hostname );
   $portaddr = sockaddr_in( '4201', $ipaddr );

   $fud_query = $username . '|user.' . $username;

   send( FUD, "$fud_query", 0, $portaddr ) == length( $fud_query )
      or die( "failed to send fud query: $!" );

   recv( FUD, $fud_response, 512, 0 )
      or die( "recv() failed: $!" );

   print( "FUD responded: $fud_response\n" );

   exit( 0 );


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.


Files
=====

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


Bugs
====

Though not really a bug, **fud** will silently ignore any requests
that it does not consider valid.

Also not really a bug, **fud** requires that the anonymous user has
the 0 (zero) right on the mailbox in question.  This is only a “bug”
because 0 is not a standard IMAP ACL bit.

**fud** is an experimental interface meant to provide information to
build a finger-like service around.  Eventually it should be
superseded by a more standards-based protocol.


See Also
========

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