Назад | Перейти на главную страницу

ошибка postfix при поиске информации passwd (универсальная)

В postfix я пытаюсь настроить общий адрес для неизвестных локальных учетных записей. Любая почта, которая может быть доставлена ​​локальному пользователю, должна быть доставлена ​​в его локальный почтовый ящик (и уважать любые псевдонимы в /etc/aliasesкак для локальных псевдонимов, так и для псевдонимов, пересылающих почту наружу). Любая почта для пользователя, которого нет в /etc/aliases или /etc/passwd должен быть перенаправлен на root. Для root Я установил псевдоним в /etc/aliases перенаправить на отдельный почтовый адрес admin@companydomain.com (не на локальном сервере).

Чтобы добиться этого, я установил main.cf:

luser_relay = root
local_recipient_maps =

Другие настройки, которые я пробовал для luser_relay являются:

admin@companydomain.com
root@localhost
root@localhost.localdomain
root@--server hostname--
root@$local
--other user with no alias--
--other user with no alias--@localhost
--other user with no alias--@localhost.localdomain
--other user with no alias--@--server hostname--
--other user with no alias--@$local

Но я продолжаю получать ошибку поиска пользователя (при отправке письма несуществующему тест-пользователю с mail -s test test):

Jan  4 14:08:03 test postfix/pickup[28595]: A4E3382454: uid=--uid-- from=<--local user-->
Jan  4 14:08:03 test postfix/cleanup[29192]: A4E3382454: message-id=<20150104140803.A4E3382454@--server hostname-->
Jan  4 14:08:03 test postfix/qmgr[28596]: A4E3382454: from=<--local user--@--server hostname-->, size=456, nrcpt=1 (queue active)
Jan  4 14:08:03 test postfix/local[29194]: warning: error looking up passwd info for test: No such file or directory
Jan  4 14:08:03 test postfix/local[29194]: A4E3382454: to=<test@--server hostname-->, orig_to=<test>, relay=local, delay=0.02, delays=0.01/0/0/0, dsn=4.0.0, status=deferred (user lookup error)

Если есть решение, в котором установлен адрес для приема всей почты домена admin@companydomain.com это нормально, но я бы предпочел, чтобы его перенаправили на root и честь /etc/aliaseses так что, когда мне нужно изменить admin@companydomain.com Мне нужно сделать это только в /etc/aliases а также не в другом файле конфигурации постфикса.

Моя версия постфикса - 2.10.1 (CentOS 7), и помимо вышеуказанного luser_relay и local_recipient_maps Я добавил recipient_bcc_maps и transport_maps.

Возможно моя транспортная карта мешает luser_relay?

/.*@localhost(\.localdomain)?$/  local:
/.*@--the server's hostname--/   local:
/.*@--company domain--           relay:
/.*/                             discard:

Назначение карты транспорта - доставить любую локальную почту, разрешить отправку почты в домен компании, но отбросить любые другие письма. В recipient_bcc_maps настроен для скрытой копии всех писем, отклоненных в транспортной карте, на отладочный адрес. Также псевдоним для root в /etc/aliases попадает в --other domain to not discard--. Поскольку это касается сервера разработки, я хочу, чтобы любая локальная почта доставлялась как таковая, а также доставляла любую почту, адресованную домену компании, но предотвращала отправку любой другой почты во внешний мир.

Выход postconf -n:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = localhost
inet_protocols = all
local_recipient_maps =
luser_relay = root
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
recipient_bcc_maps = pcre:/etc/postfix/recipient_bcc
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
transport_maps = pcre:/etc/postfix/transport
unknown_local_recipient_reject_code = 550

Кто-нибудь может заметить ошибку в моей конфигурации?

Спасибо!

Это заняло много времени, но я, наконец, смог выяснить проблему. Это в конфигурации NSS /etc/nsswitch.conf. На моем облачном сервере Rackspace был пакет yum sssd-client установлен по умолчанию, и /etc/nsswitch.conf имеет записи по умолчанию для passwd и другие файлы для использования sss.

В основном, если у вас есть значение по умолчанию /etc/nsswitch.conf и установите sssd-client упаковать No such file or directory проблема возникнет в CentOS 7. Это потому, что он пытается найти /var/lib/sss/mc/passwd (в конце концов понял это с помощью strace что также было большой проблемой для правильной работы). Но этот файл не существует, если вы не настроили sssd. Я протестировал это, загрузив CentOS 7 DVD с веб-сайта CentOS и установив минимальную установку на виртуальную машину. Далее я добавил luser_relay в конфигурацию Postfix, которая работала нормально, тогда все, что я сделал, это установил sssd-client и он "волшебным образом" перестал работать.

Исправление 1: удалять sss из /etc/nsswitch.conf.

Вы увидите такую ​​строку:

passwd: files sss

Измените это на:

passwd: files

По умолчанию sss также включен для shadow, group, services и netgroup, вы должны удалить его и для них, чтобы предотвратить проблемы, когда libnss пытается получить к ним доступ.

Исправление 2: Удалить sssd-client пакет.

Удаление sssd-client пакет также решает проблему, я думаю, потому что без клиента libnss игнорирует sss директива в /etc/nsswitch.conf. Если он вам не нужен, вы можете удалить его с помощью yum remove sssd-client.