Первый способ - использовать внешний скрипт авторизации. Просто, но подозреваю что может не лучшим образом сказаться на производительности. Хотя может это все и копейки. Не исследовал. Второй способ - переписать код ejabberd-а :) Файлик ejabberd_auth_odbc.erl Геморно, но можно накрутить черта лысого (ну как собственно в случае переписывания чего бы то ни было), как то подтягивание групп из базы друпала и т.д. и т.п. Еще один минус второго способа - при апдейте ejabberd-а придется опять править код. Ибо к сожалению ejabberd не позволяет кастомизировать sql-запросы к базе. Из всех рассмотренных на этот счет стОящих аналогов нативно это позволяет делать только openfire. В нем можно задавать запросы для авторизации, подтягивания списка юзеров и групп.
Если смотреть со стороны друпала, то он сейвит всё в БД (мускуль или постгрес), потому имхо проще заставить ejabberd копаться в базе на предмет наличия юзеров.