Остановите (большинство) локальную доставку в Постфиксе

Я пытаюсь установить Постфикс (2.11.4) конфигурация так, чтобы она сделала это:

  1. Отсылает почту, происходящую из локального сервера
  2. Принимает входящую корреспонденцию для единственного псевдонима, который на самом деле указывает на сценарий
  3. И ничто иное

Вот частичный main.cf:

mydomain               = example.com
inet_interfaces        = all
inet_protocols         = all
mydestination          = $myhostname, localhost.$mydomain, localhost
alias_maps             = hash:/etc/postfix/aliases
alias_database         = hash:/etc/postfix/aliases
relayhost              = outbound.example.com
allow_mail_to_commands = alias,forward,include
allow_mail_to_files    = alias,forward,include
luser_relay            = $local@example.com

Для № 1 почта, сгенерированная на сервере для someone@example.com автоматически, отправляется в "outbound.example.com" для обработки. И для № 2, у меня есть это в/etc/postfix/aliases, таким образом, сообщения на "robot@myserver.example.com" могут быть обработаны сценарием Perl

robot: | "/usr/local/bin/robomail.pl"

Пока все хорошо. Это - № 3, который дает мне проблему.

Посмотрите, этот сервер раньше выполнял Sendmail с включенной подменой домена. И существуют все еще некоторые приложения на этом сервере (которым я не управляю), которые посылают электронное письмо просто "george" (например), и ожидают, что сервер преобразует это автоматически в "george@example.com", который затем направляется на "outbound.example.com" для доставки.

Я пытался зафиксировать это путем установки a luser_relay директива:

luser_relay = $local@example.com

Этот вид работ - когда локальная доставка к сбоям "george", Postfix перепишет его на george@example.com

Но если "george" будет на самом деле действительной учетной записью на сервере (т.е. перечисленный в/etc/passwd), то то Постфикс примет сообщение и поставит его каталогу местной почты, вместо того, чтобы переписать адрес и передать его.

Я могу работать вокруг этого путем создания другой/etc/postfix/aliases записи:

george: george@example.com

Но это, очевидно, не масштабируемо, когда сервер имеет десятки учетных записей локального пользователя, с более добавляемый все время. И поскольку лучше всего я могу сказать из документации, нет никакого подстановочного знака, эквивалентного для/etc/postfix/aliases. Иначе я хотел бы сделать что-то вроде этого:

robot: | "/usr/local/bin/robomail.pl"
*: *@example.com

Существует ли путь в Постфиксе, чтобы сделать это? Примите почту для "робота", но передайте все остальное "outbound.example.com" для доставки (добавляющий @example.com при необходимости)?

ОБНОВЛЕНИЕ: Некоторые детали postconf и журнал сообщения, которое отправляется от "корня" до "george" на локальном сервере:

myhostname = myserver.example.com
myorigin = $myhostname
masquerade_domains = 

Mar 23 14:07:26 myserver postfix/pickup[12851]: D2B4A4763D: uid=0 from=<root>
Mar 23 14:07:26 myserver postfix/cleanup[19630]: D2B4A4763D: message-id=<20150323190726.D2B4A4763D@myserver.example.com>
Mar 23 14:07:26 myserver postfix/qmgr[29583]: D2B4A4763D: from=<root@myserver.example.com>, size=323, nrcpt=1 (queue active)
Mar 23 14:07:26 myserver postfix/local[19632]: D2B4A4763D: to=<george@myserver.example.com>, orig_to=<george>, relay=local, delay=0.04, delays=0.02/0/0/0.02, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 23 14:07:26 myserver postfix/qmgr[29583]: D2B4A4763D: removed
2
задан 24 March 2015 в 00:31
1 ответ

Из журналов процесс маскировки домена перезаписывает отправителя и получателя из что-то в (скрыто)Виновником этого переписывания является paramater myorigin и append_at_myorigin . Как сказано в документации postfix

append_at_myorigin (по умолчанию: yes)

Для локально отправленной почты добавьте строку «@ $ myorigin» к почтовым адресам без информации о домене. В случае удаленной отправки почты добавьте вместо нее строку «@ $ remote_header_rewrite_domain».

Примечание 1: эта функция включена по умолчанию, и ее нельзя отключать. Postfix не поддерживает адреса без домена.

Примечание 2: с Postfix версии 2.2 переопределение адреса заголовка сообщения происходит только при выполнении одного из следующих условий:

  • Сообщение получено с помощью команды Postfix sendmail (1) ,
  • Сообщение получено от сетевого клиента, который соответствует $ local_header_rewrite_clients,
  • Сообщение получено из сети, а параметр remote_header_rewrite_domain указывает непустое значение.

Чтобы получить поведение до версии Postfix 2.2 укажите "local_header_rewrite_clients = static: all".

В вашей конфигурации постфиксное добавление $ myorigin = $ myhostname = myserver.example.com к george .

Поскольку $ myhostname (myserver.example.com) указано в `mydestination, postfix попытается выполнить проверку существования пользователя с помощью

  1. Проверить, указан ли пользователь (george) как локальный пользователь на myserver.example.com
  2. Проверьте, указан ли пользователь (george) в alias_maps

. Если пользователь не соответствует обеим проверкам, электронное письмо будет возвращено. В противном случае электронная почта будет доставлена ​​в локальный почтовый ящик.

Предлагаемое решение

Судя по вопросу, похоже, вы хотите переписать george -> (скрыто) вместо george -> (скрыто). Затем вы можете изменить параметр myorigin становится $ mydomain . В main.cf

myorigin = $mydomain
2
ответ дан 3 December 2019 в 11:38

Теги

Похожие вопросы