Я решил не останавливаться на достигнутом и, кроме переноса списка пользователей в СУБД, решил туда же запихнуть и список алиасов, мэйлеров и прочей лабуды. Для этого на SendMail наложил патчик от Blue Labs ( http://blue-labs.org/software/sm-pgsql/ ). Разумеется, после сборки ничего не заработало. Опуская долгие выяснения, почему письма не ходят, привожу сухую выжимку: проблема заключалась в том, что я слегка изменил содержимое конфигурационного файла, чего вполне оказалось достаточно для того чтобы M4 скомпилировл неверную конфигурацию. В общем выяснилось, что M4 не всегда "переваривает" символ ' (апостроф) так, как хотелось бы мне. Поэтому подстановочные параметры для запросов пришлось вынести в отдельные переменные (как, собственно, изначально авторы патча и предлагали сделать).
Вот работоспособный вариант
===кусок из sendmail.mc===
define(`PG_WHERE', '%s')
define(`PG_WHERE2', 'Алиас')
define(`PG_CONNSTR', "host=localhost dbname=sendmail user=sendmail password='password'")
FEATURE(`pg_aliases', pgsql -c `PG_CONNSTR' -s "select login from users where account=`PG_WHERE' and password = `PG_WHERE2'")dnl
FEATURE(`pg_virtualusers', pgsql -c `PG_CONNSTR' -s "select s_out from virtualusers where s_in=`PG_WHERE'")dnl
FEATURE(`pg_usersdb', pgsql -c `PG_CONNSTR' -s "select s_out from userrewrite where s_in=`PG_WHERE'")dnl
FEATURE(`pg_accessdb', pgsql -c `PG_CONNSTR' -s "select s_out from access where s_in=`PG_WHERE'")dnl
FEATURE(`pg_domaintable', pgsql -c `PG_CONNSTR' -s "select s_out from domaintable where s_in=`PG_WHERE'")dnl
FEATURE(`pg_generics', pgsql -c `PG_CONNSTR' -s "select s_out from genericstable where s_in=`PG_WHERE'")dnl
FEATURE(`pg_mailer', pgsql -c `PG_CONNSTR' -s "select s_out from mailertable where s_in=`PG_WHERE'")dnl
===конец куска из sendmail.mc===