FUD(8)
π FUD(8) β the Cyrus IMAP manual, but make it slay π
okay bestie, sit down, hydrate, because we're about to talk about fud, the long-lived datagram daemon from the Cyrus IMAP docs. yes it's a Unix manual page. yes it's still giving group chat. we move.
β¨ NAME β¨
fud β Cyrus IMAP documentation, and also: it hands out info about user mailboxes, like a lil gossipy birdie π¦
πΈ SYNOPSIS πΈ
fud [ -C config-file ] [ -U uses ] [ -T timeout ] [ -D ]
π¦ DESCRIPTION π¦
so fud is a long lived datagram daemon that gets started from master. its whole thing β its main character job β is spilling the tea about:
- 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 reads its config options out of the imapd.conf(5) file, unless you tell it otherwise with -C.
and bestie, hear me out: if fud is running on a Cyrus Murder frontend machine, it will automatically proxy any and all FUD requests to the appropriate backend server. no cap. it just handles it for you. π
π setting it up
to set up the FUD daemon, add this to your cyrus.conf:
fud cmd="fud" listen="fud" prefork=1 proto="udp"
and this goes in /etc/services:
fud 4201/udp # Cyrus IMAP FUD Daemon
π§ Client
okay so plot twist: there is no specific FUD client. but here's a lil demo of how one might access FUD. she's giving DIY energy:
#!/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 π
every single one of them, we are NOT skipping a single icon here:
-C config-fileβ use the config file config-file that you specified instead of the defaultimapd.conf(5). like bringing your own snack instead of eating the communal one π-U usesβ the max number of times the process should be used for new connections before it shuts down. default is250. she has a limit, respect it.-T timeoutβ how many seconds the process will wait for a new connection before shutting down. ok important β οΈ: a value of0(zero) will disable the timeout entirely. default is60.-Dβ run the external debugger specified indebug_command. π
π FILES π
/etc/imapd.conf,/etc/cyrus.conf
π BUGS π
okay so these are the "bugs" and honestly they're barely bugs, but we're keeping the receipts:
- though not really a bug,
fudwill silently ignore any requests that it does not consider valid. she's ghosting them, respectfully. π - also not really a bug:
fudrequires that the anonymous user has the0(zero) right on the mailbox in question. this is only a "bug" because0is not a standard IMAP ACL bit. iykyk π fudis 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. so likeβ¦ she's a phase. but a cute one. periodt.
β SEE ALSO β
π«Ά AUTHOR π«Ά
The Cyrus Team, Nic Bernstein (Onlight) β absolute legends, no notes π
π COPYRIGHT π
1993β2026, The Cyrus Team
and that's the whole page bestie!! go forth, query those mailboxes, stay iconic β¨
this has been Cyrus IMAP 3.12.3, brought to you on Jul 15, 2026 β mwah, love u, bye ππ¦π
π¦ where this page comes from
- ubuntu stonking: cyrus-common 3.12.3-3build1 Β· CMU
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms