Я хотел бы использовать dovecot с виртуальными пользователями на основе sql (что уже отлично работает в моей текущей настройке exim + courier-imapd).
В моей настройке есть "почтовые ящики", у которых есть mailboxname @ domain и пароль. Кроме того, существуют «адреса», которые сопоставляют фактические адреса электронной почты с почтовыми ящиками.
При входе через IMAP или POP3 пользователи используют имя и пароль почтового ящика. Поэтому я просто проверяю таблицу почтовых ящиков в запросе dovecot passdb, который отлично работает.
Однако запрос userdb представляет собой своего рода проблему: когда пользователь входит в систему, доступная информация, очевидно, является mailboxname @ domain имя пользователя, которое затем можно использовать для создания пути к почтовому ящику (даже возможно с static
userdb).
Однако когда электронное письмо доставляется через LMTP, мне нужно запросить адреса таблица для получения почтового ящика назначения - поэтому в этом случае мне понадобится другой запрос.
Одним из возможных решений, вероятно, было бы использование некоторых условных операторов на уровне БД, которые выполняют разные запросы в зависимости от %s
переменная (название службы, например lmtp
) - но, очевидно, это был бы огромный беспорядок.
Другое решение может заключаться в простом использовании LDA вместо LMTP, поскольку я могу выполнить поиск имени почтового ящика в exim и просто передать его программе LDA, но использование LDA включает не только запуск дополнительного процесса (не то чтобы это важно для моих маломощный сервер, но в любом случае) и, вероятно, худшая обработка ошибок, поскольку LDA может возвращать exim только коды статуса выхода, в отличие от LMTP, который, вероятно, возвращает подробное сообщение об ошибке.
Поэтому я хотел бы знать, есть ли способ выполнять разные запросы userdb в зависимости от того, где они используются - при доставке или при доступе к почтовому ящику.
Dovecot LMTP полностью не связан с сервером IMAP (и его сопутствующим логином и userdb).
Однако у ttbomk нет возможности входить / доставлять почту с использованием одного пользователя и принимать почту с использованием другого (или псевдонима).
В postfix это тривиально решить, добавив виртуальную карту псевдонимов, содержащую адреса получателей и пользователей LMTP; это не то, что LDA должно делать.