erro postfix procurando informações passwd (catch-all)

2

No postfix, estou tentando configurar um endereço coletor para contas locais desconhecidas. Qualquer email que possa ser entregue a um usuário local deve ser entregue em sua caixa de correio local (e respeitar os aliases em /etc/aliases , tanto para aliases locais quanto para aliases que encaminham emails para o exterior). Qualquer email para um usuário que não existe em /etc/aliases ou /etc/passwd deve ser redirecionado para root . Para root , configurei um alias em /etc/aliases para redirecionar para um endereço de e-mail separado [email protected] (não no servidor local).

Para conseguir isso, defino em main.cf :

luser_relay = root
local_recipient_maps =

Outras configurações que tentei para luser_relay são:

[email protected]
root@localhost
[email protected]
root@--server hostname--
root@$local
--other user with no alias--
--other user with no alias--@localhost
--other user with no [email protected]
--other user with no alias--@--server hostname--
--other user with no alias--@$local

Mas continuo recebendo um erro de pesquisa de usuário (ao enviar um email para um usuário de teste não existente com 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)

Se houver uma solução em que o endereço pega-tudo esteja definido [email protected] , tudo bem, mas eu prefiro que ele seja redirecionado para root e honre /etc/aliaseses para que, quando eu precisar alterar [email protected] Eu só tenho que fazer isso em /etc/aliases e não em outro arquivo de configuração do postfix.

Minha versão do postfix é 2.10.1 (CentOS 7) e, além do acima, luser_relay e local_recipient_maps , adicionei um recipient_bcc_maps e transport_maps .

Talvez meu mapa de transporte interfira com luser_relay ?

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

O objetivo do mapa de transporte é entregar qualquer e-mail local, permitir que o e-mail seja enviado para o domínio da empresa, mas descartar qualquer outro e-mail. O recipient_bcc_maps é configurado para bcc todos os e-mails descartados no mapa de transporte para um endereço de depuração. Além disso, o alias de root in /etc/aliases cai no --other domain to not discard-- . Como isso diz respeito a um servidor de desenvolvimento, quero que qualquer e-mail local seja entregue como tal e também entregue qualquer e-mail endereçado ao domínio da empresa, mas evite que qualquer outro e-mail seja enviado para o mundo externo.

A saída de 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

Alguém que consegue identificar o erro na minha configuração?

Obrigado!

    
por SunMar 04.01.2015 / 14:46

1 resposta

4
Demorou um bom tempo, mas finalmente consegui descobrir o problema. Está na configuração do NSS /etc/nsswitch.conf . Meu Rackspace Cloud Server tinha o pacote yum sssd-client instalado por padrão e /etc/nsswitch.conf tem entradas padrão para passwd e outros arquivos para usar sss .

Basicamente, se você tiver o /etc/nsswitch.conf padrão e instalar o pacote sssd-client , o problema No such file or directory ocorrerá no CentOS 7. Isso porque ele procura por /var/lib/sss/mc/passwd (acabou descobrindo isso com a ajuda de um strace , que também foi um grande problema para começar a funcionar corretamente). Mas esse arquivo não existe quando você não configurou sssd . Eu testei isso baixando o DVD do CentOS 7 no site do CentOS e instalando uma instalação mínima em uma VM. Em seguida eu adicionei luser_relay à configuração do Postfix que funcionou bem, então tudo que eu fiz foi instalar sssd-client e "magicamente" parou de funcionar.

Correção 1: Remova sss de /etc/nsswitch.conf .

Você verá uma linha como:

passwd: files sss

Altere para:

passwd: files

Por padrão, sss também está habilitado para shadow , group , services e netgroup , você deve removê-lo também para evitar problemas quando libnss tentar acessá-los. / p>

Correção 2: remova o pacote sssd-client .

Remover o pacote sssd-client também corrige o problema, eu acho que sem um cliente libnss ignora a diretiva sss em /etc/nsswitch.conf . Se você não precisa, você pode removê-lo com yum remove sssd-client .

    
por 08.01.2015 / 15:32