lbdbq - query program for the little brother’s database
lbdbq is the client program for the little brother’s database. It will
attempt to invoke various modules to gather information about persons
matching something. E.g., it may look at a list of addresses from
which you have received mail, it may look at YP maps, or it may try to
finger something@<various hosts>.
The behavior is configurable: Upon startup, lbdbq will source the shell
if they exist.
They can be used to set the following global variables:
a space separated list of directories, where lbdbq should look
a space separated list of the modules to use.
If you set this to false or no, lbdbq won’t sort the addresses
but returns them in reverse order (which means that the most
recent address in m_inmail database is first). If you set this
to name, lbdbq sorts the output by real name. If you set this
to comment, it sort the output by the comment (for example the
date in m_inmail). reverse_comment realizes the same as
comment, but in reverse order, so the most recent timestamp of
m_inmail may be on top. If you set SORT_OUTPUT to address, lbdbq
sorts the output by addresses (that’s the default).
If you set this to true or yes, lbdbq won’t remove duplicate
addresses with different real name comment fields.
Note that there are defaults, so you should most probably modify these
variables using constructs like this:
Additionally, modules may have configuration variables of their own.
Currently, the following modules are supplied with lbdb:
This module will use finger to find out something more about a
person. The list of hosts do be asked is configurable; use the
M_FINGER_HOSTS variable. Note that "localhost" will mean an
invocation of your local finger(1) binary, and should thus work
even if you don’t provide the finger service to the network.
m_finger tries to find out the machines mail domain name in
/etc/mailname, by parsing a sendmail.cf file (if it finds one)
and by reading /etc/hostname and /etc/HOSTNAME. If you know
that this fails on your machine, or you want to force lbdbq to
consider some other name to be the local mail domain name
(misconfigured SUNs come to mind here), you can specify a name
using the MAIL_DOMAIN_NAME variable. If this variable is set by
you, no probing will be done by lbdbq.
This module will look up user name fragments in a list of mail
addresses created by lbdb-fetchaddr(1).
This module searches for matching entries in your local
/etc/passwd file. It evaluates the local machine mail domain in
the same way m_finger does. If you set PASSWD_IGNORESYS=true,
this module ignores all system accounts and only finds UIDs
between 1000 and 29999 (all other UIDs are reserved on a Debian
This module searches for matching entries in the NIS password
database using the command ‘‘ypcat passwd’’.
This module searches for matching entries in the NIS+ password
database using the command ‘‘niscat passwd.org_dir’’.
This module searches for matching entries in whatever password
database is configured using the command ‘‘getent passwd’’.
m_pgp2, m_pgp5, m_gpg
These modules scan your PGP 2.*, PGP 5.* or GnuPG public key
ring for data. They use the programs pgp(1), pgpk(1), or gpg(1)
to get the data.
m_fido This module searches your Fido nodelist, stored in
$HOME/.lbdb/nodelist created by nodelist2lbdb(1).
This module uses the program abook(1), a text based address book
application to search for addresses. You can define multiple
abook address books by setting the variable ABOOK_FILES to a
space separated list.
This module uses the program addr-email(1), a text based
frontend to the Tk addressbook(1) application.
This module searches the variable MUTTALIAS_FILES (a space
separated list) of files in MUTT_DIRECTORY that contain mutt
aliases. File names without leading slash will have
MUTT_DIRECTORY (defaults to $HOME/.mutt or $HOME, if $HOME/.mutt
does not exist) prepended before the file name. Absolute file
names (beginning with /) will be taken direct.
m_pine This module searches pine(1) addressbook files for aliases. To
realize this it first inspects the variable PINERC. If it isn’t
set, the default ‘/etc/pine.conf /etc/pine.conf.fixed .pinerc’
is used. To suppress inspecting the PINERC variable, set it to
no. It than takes all address-book and global-address-book
entries from these pinerc files and adds the contents of the
variable PINE_ADDRESSBOOKS to the list, which defaults to
‘/etc/addressbook .addressbook’. Then these addressbooks are
searched for aliases. All filenames without leading slash are
searched in $HOME.
m_palm This module searches the Palm address database using the
Palm::PDB(3pm) and Palm::Address(3pm) Perl modules from CPAN.
It searches in the variable PALM_ADDRESS_DATABASE or if this
isn’t set in $HOME/.jpilot/AddressDB.pdb.
This module searches for addresses in your GnomeCard database
files. The variable GNOMECARD_FILES is a whitespace separated
list of GnomeCard data files. If this variable isn’t defined,
the module searches in $HOME/.gnome/GnomeCard for the GnomeCard
database or at least falls back to $HOME/.gnome/GnomeCard.gcrd.
If a filename does not start with a slash, it is prefixed with
m_bbdb This module searches for addresses in your (X)Emacs BBDB (big
brother database). It doesn’t access ~/.bbdb directly (yet) but
calls emacs(1) or xemacs(1) with a special mode to get the
information (so don’t expect too much performance in this
module). You can configure the EMACS variable to tell this
module which emacsen to use. Otherwise it will fall back to
emacs or xemacs.
m_ldap This module queries an LDAP server using the Net::LDAP(3pm) Perl
modules from CPAN. It can be configured using an external
resource file /etc/lbdb_ldap.rc You can explicity define a LDAP
query in this file or you can use one or more of the predefined
queries from the %ldap_server_db in this file. For this you
have to define a space separated list of nicknames from entries
in the variable LDAP_NICKS.
This module searches for addresses stored in your
$WANDERLUST_ADDRESSES (or by default in $HOME/.addresses) file,
an addressbook of WanderLust.
This module queries the OS X AddressBook. It is only available
on OS X systems.
This module queries the Ximian Evolution address book. It
depends on the program evolution-addressbook-export, which is
shipped with evolution.
m_vcf This module uses libvformat to search for addresses from the
space-separated set of vCard files defined in $VCF_FILES.
Feel free to create your own modules to query other database resources,
YP maps, and the like. m_finger should be a good example of how to do
If you create your own modules or have other changes and feel that they
could be helpful for others, don’t hesitate to submit them to the
author for inclusion in later releases.
Finally, to use lbdbq from mutt, add the following line to your
set query_command="lbdbq %s"
-v | --version
Print version number of lbdbq.
-h | --help
Print short help of lbdbq.
finger(1), ypcat(1), niscat(1), getent(1), pgp(1), pgpk(1), gpg(1),
lbdb-fetchaddr(1), nodelist2lbdb(1), mutt_ldap_query(1), abook(1),
addr-email(1), addressbook(1), mutt(1), pine(1), emacs(1), xemacs(1),
Palm::PDB(3pm), Palm::Address(3pm), Net::LDAP(3pm).
Most of the really interesting code of this program (namely, the RFC
822 address parser used by lbdb-fetchaddr) was stolen from Michael
Elkins’ mutt mail user agent. Additional credits go to Brandon Long for
putting the query functionality into mutt.
Many thanks to the authors of the several modules and extensions: Ross
Campbell <firstname.lastname@example.org> (m_abook, m_yppasswd), Marc de
Courville <email@example.com> (m_ldap, mutt_ldap_query), Brendan Cully
<firstname.lastname@example.org> (m_osx_addressbook, m_vcf), Gabor Fleischer
<email@example.com> (m_pine), Rick Frankel <firstname.lastname@example.org>
(m_gnomecard), Utz-Uwe Haus <email@example.com> (m_bbdb, m_nispasswd),
Torsten Jerzembeck <firstname.lastname@example.org> (m_addr_email), Adrian
Likins <email@example.com> (m_getent), Gergely Nagy
<firstname.lastname@example.org> (m_wanderlust), Dave Pearson <email@example.com>
(m_palm, lbdb.el), and Brian Salter-Duke <firstname.lastname@example.org>
The lbdb package was initially written by Thomas Roessler
<email@example.com> and is now maintained and heavily extended by Roland