Каждая строка данного файла состоит из двух полей: первое поле содержит ключ, то есть регистрационное имя пользователя, а второе поле - имя и фамилию пользователя, разделенные точкой. В качестве разделителей полей выступают пробелы. Запрос по имени dan для этой базы возвращает результат Dan.Scribner. Небольшую базу данных вроде этой можно легко создать вручную. В системе с большим числом пользовательских учетных записей процесс лучше автоматизировать извлечением регистрационного имени, имени и фамилии пользователя из файла /etc/passwd. Поле gcos файла /etc/ passwd часто содержит настоящее имя пользователя. После сохранения данных в текстовом файле их необходимо преобразовать в базу данных посредством команды makemap. Программа makemap входит в состав дистрибутива sendmail. Ее синтаксис выглядит следующим образом:
makemap type name
makemap читает стандартный ввод и записывает базу данных в файл name. Поле type определяет тип базы данных. Наиболее распространенные типы баз данных для sendmail: dbm, btree и hash. Базы данных всех этих типов могут создаваться при помощи команды makemap. Предположим, что приведенные выше данные мы сохранили в файле realnames. Следующая команда преобразует этот файл в базу данных:
makemap hash genericstable < realnames
makemap читает текстовый файл и создает файл базы данных с именем genericstable. Эта база данных связывает регистрационные имена пользователей с их настоящими именами, то есть по ключу willy возвращается значение Bill.Wright.
После создания базы данных следует создать файл настройки, где она будет задействована. Все макроопределения, связанные с использованием базы данных, хранятся в файле wrotethebook.com.m4. Нам необходимо включить этот файл в настройки. С этой целью мы добавим строку DOMAIN(wrotethebook.com) в управляющий файл (linux.mc), а затем обработаем файл linux.mc процессором ш4. Следующая команда grep показывает, как выглядят макроопределения в файле после внесения изменений: