Параметр sendmail lda для полного адреса получателя

Используя это:

define('LOCAL_MAILER_ARGS', 'procmail -t -Yo -a $h -d $u')

в моем sendmail mc выдает логин procmail вроде

user

вместо

user@domain.com

с помощью

define('LOCAL_MAILER_ARGS', 'procmail -t -Yo -a $h -d $u@$h')

дает тогда

user@localhostname

Моя проблема в том, что у нас есть пользователи электронной почты в форме 'user@domain.tld', а не 'user' - таким образом, procmail не может найти, например, почтовые каталоги только с адресной частью пользователя 'user'. Как можно предоставить procmail полный адрес получателя от sendmails lda call?

РЕДАКТИРОВАТЬ:

Я постараюсь быть более понятным, чтобы увидеть причину.

Мои "виртуальные" получатели: а) не имеют системных пользователей и имеют разные домены в своих адресах, все они установлены с помощью функции use_cw_file. Локальный почтовик - это procmail AND dovecot (+sieve), который, наконец, также обрабатывает виртуальных пользователей. Потому что dovecot присваивает имя домену в дополнение к пользователю для обработки, например, admin@domain1.com и admin@domain2.com на одном хосте.

Поэтому мне нужен sendmail для доставки полного адреса в lda(стек) (procmail -> sieve -> dovecot).

2 ответа

Sendmail: доставка procmail для виртуальных доменов

Вы можете выбрать procmail mailer с помощью сценария prcoamil в качестве аргумента в mailertable (procmail в качестве локального почтовика - другой зверь).

отправляемый файл:

# deliver messages to domain.tld 
# using etc/procmailrcs/domain.tld.rc procmail script
domain.tld  procmail:/etc/procmailrcs/domain.tld.rc

файл доступа (таблицы):

to:domain.tls  RELAY

Комментарии:

  1. procmail обрабатывает скрипт в /etc/procmailrcs особым образом (см. man procmail)
  2. mailertable НЕ применяется для локальных доменов электронной почты, поэтому запись в таблицу доступа требуется для приема сообщений в домен отовсюду.
    Как использовать root echo '$=w' | sendmail -bt получить список локальных почтовых доменов
  3. Вы можете использовать virtusertable с _VIRTUSER_STOP_ONE_LEVEL_RECURSION_, чтобы перечислить действительные адреса в домене и отклонить оставшиеся
  4. По умолчанию scipt будет выполняться один раз для каждого получателя в домене

$LOGNAME по определению является локальным именем пользователя. Я не думаю, что есть способ переопределить это (или что должен быть один).

Другие вопросы по тегам