FUD(8)

πŸ’– FUD β€” like, the Cyrus IMAP one, bestie (section 8, system admin girlies) πŸ’–

okay so this is fud, and it lives in the Cyrus IMAP docs situation. no cap, it's giving very "quiet background daemon that knows things about u". let's get into it ✨


🌸 NAME 🌸

fud β€” Cyrus IMAP documentation, and also: Provide information about user mailboxes 🫢


πŸŽ€ SYNOPSIS πŸŽ€

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

πŸ¦‹ DESCRIPTION πŸ¦‹

so fud is a long lived datagram daemon, and it gets started from master. what does it do tho?? it tells u:

  • when a user last read their mail πŸ‘€
  • when mail last arrived in a user's mailbox πŸ“¬
  • how many messages are recent for that user πŸ”’

it's literally the group chat gossip of mailboxes, but make it UDP.

fud reads its config options out of the imapd.conf(5) file, unless u say otherwise with -C.

and here's the iconic part: if fud is running on a Cyrus Murder frontend machine, it will automatically proxy any and all FUD requests to the appropriate backend server. like, it just handles it. main character energy fr fr πŸ‘‘


🧚 To set up the FUD daemon, bestie

add this to your cyrus.conf:

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

and add this to /etc/services:

fud             4201/udp                        # Cyrus IMAP FUD Daemon

πŸ’… Client

real talk: there is no specific FUD client. this next bit just 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 );

she's a little perl script and she's doing her best πŸ“


✨ OPTIONS ✨

  • -C config-file β€” use the config file u specify as config-file instead of the default imapd.conf(5). like, "not that one, this one" πŸ’β™€οΈ
  • -U uses β€” the max number of times the process should be used for new connections before shutting down. the default is 250. so it's got a limit and it respects it πŸ‘‘
  • -T timeout β€” how many seconds the process will wait for a new connection before shutting down. heads up bestie: a value of 0 (zero) will disable the timeout. the default is 60 ⏰
  • -D β€” run the external debugger specified in debug_command. yeah, it's debugger time πŸ’€

πŸ“ FILES πŸ“

  • /etc/imapd.conf
  • /etc/cyrus.conf

πŸ’€ BUGS πŸ’€

okay so, "though not really a bug", fud will silently ignore any requests that it does not consider valid. it's not mad, it's just not answering. ghosting, but in daemon form πŸ™ˆ

also not really a bug: fud requires that the anonymous user has the 0 (zero) right on the mailbox in question. the reason this is only a "bug" is that 0 is not a standard IMAP ACL bit. so like... it's a vibe, not a spec 🫠

and one more for the road: fud is an experimental interface, meant to provide information so u can build a finger-like service around it. eventually it should be superseded by a more standards-based protocol. so she's experimental, she's iconic, she's maybe temporary 🧚


πŸ”₯ SEE ALSO πŸ”₯

iykyk πŸ’…


πŸ‘‘ AUTHOR πŸ‘‘

The Cyrus Team, Nic Bernstein (Onlight) β€” absolute legends, no notes 🌈


1993–2026, The Cyrus Team


and that's the whole page bestie!! πŸŽ€ this was fud(8) from Cyrus IMAP, version 3.12.4, dated Sep 09, 2026. go read ur mail, go query ur daemon, stay hydrated, and remember: the anonymous user needs the zero right. periodt. πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from