использование sendmail только с несистемными пользователями

использование sendmail только с несистемными пользователями

Мне нужно использовать sendmail без каких-либо системных пользователей.

Единственная проблема, которая все еще существует в моей конфигурации, заключается в том, что FEATURE(virtusertable)мне нужен конечный системный пользователь на RHS в моем virtusertable, например, такой:

@domain.tld           [email protected]
[email protected]       systemuser

Проблема в том, что такого пользователя systemuser НЕТ, а я хочу, чтобы вся почта для @domain.tld доставлялась на мой lda (procmail, затем dovecot-lda), который способен обрабатывать полные адреса электронной почты как пользователей.

Я уже пробовал такие вещи, как

define(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_', `true')dnl
define(`_NEED_MACRO_MAP_',`1')dnl

но и это не помогает.

У нас уже есть уродливый обходной путь со скриптами procmail, который считывает virtusertable, но мы бы хотели, чтобы это обрабатывалось sendmail, чтобы любое отправленное письмо, не имеющее RHS и/или пользователя в lda, возвращалось. Кроме того, использование dovecot-lda — это прямой lda в sendmail, который также не является вариантом в нашей настройке. :(

Любая помощь приветствуется!

решение1

Взгляни наFAQ по Sendmail 3.29- «Как добавить заголовок, указывающий фактического получателя, если несколько пользователей в виртуальном домене пользуются одним почтовым ящиком?»

ИМХО, его можно легко адаптировать для достижения желаемого — он предоставляет все необходимые зацепки.

Кстати, вы можете использовать запись virtusertable "@domain.tld" для выбранного errorпочтового клиента. Это позволит вам отклонять сообщения для виртуальных пользователей, не указанных в virtusertable.

@domain.tld           error:nouser No such user here
[email protected]       systemuser+%1
[email protected]        systemuser+%1

Вы также можете проконсультироватьсяhttps://www.sendmail.com/sm/open_source/tips/virtual_hosting/

решение2

Я решил эту проблему двумя способами:

a) Патчинг libsm/mbdb.cи sendmail/recipient.cдополнительный поиск в таблице пользователей dovecot. Чтобы это заработало, потребовалась небольшая настройка LOCAL_RULE_0.

б) Анджей указал мне в похожем вопросе на stackoverflow на решение с mailertable и файлом доступа. Следуя этой идее, я нашел еще более простое решение, чтобы иметь все, что нам нужно:

virtusertable:

@domain.tld              user_domain_tld
[email protected]          user_another_tld

псевдонимы:

user_domain_tld: "|/bin/procmail -a [email protected]"
user_another_tld: "|/bin/procmail -a [email protected]"

Решение a) хорошо иметь, потому что оно изменяет принятый синтаксис в virtusertable и нужно проверять только один файл за раз, где решение b) выигрывает из-за простого способа его достижения, который, кроме того, более совместим с будущими выпусками sendmail. После всей работы я использую решение a), но я изменю его на решение b) после Рождества ;)

Связанный контент