Postfix: Endereço do destinatário rejeitado: Usuário desconhecido na tabela de destinatários locais

30

Quando tento enviar um email no meu servidor postfix para um endereço no mesmo domínio (por exemplo, se o nome do host do servidor for mail.example.com e tento enviar um email para [email protected]), recebo o seguinte erro no log eo e-mail não é entregue: Recipient address rejected: User unknown in local recipient table. Se eu enviar para um endereço em outro domínio, não tenho problemas. Aqui está o meu arquivo /etc/postfix/main.cf:

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#myorigin = /etc/mailname
myorigin = $mydomain
mydestination = $mydomain, localhost.$mydomain, localhost
relayhost =
#fake IP address
mynetworks = 127.0.0.0/8 100.837.191.223
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
Tai Squared
fonte
Eu já deparei com isso antes, quando os servidores não têm os nomes de host corretos definidos por qualquer motivo. Seu domínio está configurado mail.example.comcomo seu registro MX? Este servidor é realmente mail.example.com?
Bert

Respostas:

42

Sei que essa pergunta é um pouco antiga, então suponho que já tenha sido respondida satisfatoriamente.

Eu tinha esse mesmo problema e demorei um pouco para descobrir o que estava acontecendo. Eu acho que minha situação era a mesma da pergunta original.

O Postfix deve retransmitir todo o correio para outros servidores na Internet, na verdade, ele não recebe correio para nenhum domínio. Portanto, qualquer email enviado para example.com deve ser encaminhado para o servidor de email example.com. A solução, conforme explicado em b techieb0y, é remover $ mydomain da linha:

mydestination = $mydomain, localhost.$mydomain, localhost

Esta linha informa ao postfix que todas as mensagens enviadas para $ mydomain devem ser recebidas e armazenadas neste servidor. Não é isso que eu quero, quero que essas mensagens sejam enviadas para o servidor de e-mail real, por exemplo.com. Depois que percebi isso e removi o example.com, o correio funcionou como eu esperava. Estou publicando isso com a chance de que essa explicação ajude alguém que tropeça nessa questão no futuro.

chmac
fonte
18

O erro é bastante auto-descritivo: o nome de usuário do email de destino (à esquerda do sinal @) não pode ser mapeado para um usuário local no sistema (configurações padrão do postfix) nem para um domínio virtual (pois nenhum é configurado fora do caixa). A decisão de tentar executar esse mapeamento é controlada pela lista de domínios em 'mydestination' (mais quaisquer domínios virtuais). Se esta máquina é, de fato, o MX principal de um domínio, os usuários que não existem têm mensagens quebradas. Se essa caixa precisar apenas enviar mensagens de saída, basta remover o domínio de destino do meu destino (removendo $ mydomain da lista) - ele ainda aceitará mensagens diretamente para [email protected], mas mensagens para o usuário @ domain.tld passará pelo processo de pesquisa do MX para entrega em outro local.

techieb0y
fonte
1
você salvou o meu dia, eu estava ficando louco ... por que eu tenho dois usuários para mim, tstaerk e Thorsten;)
Thorsten Staerk
5

Quando você envia uma mensagem para o seu domínio local, o postfix é responsável por verificar se o destinatário existe. Quando você envia um email para qualquer outro domínio, o postfix não tem essa responsabilidade.

Você precisa ter um usuário local chamado test

useradd -s /bin/bash -d /home/test -U test

ou, você precisa de um alias do teste para um usuário local em / etc / aliases

echo "test: root" >> /etc/aliases
postalias /etc/aliases

E você deve estar pronto.

Julien Vehent
fonte
Existe alguma maneira de ignorar essa verificação para que eu não precise criar um usuário para cada pessoa para quem enviaria um email? Não quero usar este servidor como nosso servidor de email principal, apenas para enviar emails de um aplicativo quando ocorrerem erros. Eu preferiria não precisar atualizar o servidor toda vez que desejar adicionar um novo destinatário ao email do aplicativo.
Tai Squared
Digamos que você queira enviar um email para '[email protected]', o que você precisa fazer é garantir que seu postfix local NÃO seja responsável por 'domainz.com', caso contrário, ele tentará validar o usuário localmente. Portanto, defina a diretiva 'mydomain' para algo diferente, como 'mydomain = local.server' e o postfix enviará seu e-mail para o servidor responsável por 'domainz.com'
Julien Vehent
1

Portanto, estou tendo um problema semelhante e ainda não o descobri, mas isso deve levá-lo na direção certa:

http://www.postfix.org/STANDARD_CONFIGURATION_README.html

Veja a seção "Postfix em um cliente nulo" - acho que é isso que você deseja. Também tentei definir a configuração local_recipient_maps conforme especificado no site do postfix na página: LOCAL_RECIPIENT_README.html

Ambos os links devem fazer o que buscamos aqui, mas não consigo fazê-los funcionar. Quando faço a instalação completa do cliente nulo, a tentativa de telnet para enviar um email SMTP de teste não funciona. Recebo "telnet: conecte-se ao endereço 97.74.92.30: conexão recusada". Ao definir o mapa do destinatário local, a pesquisa no comando RCPT TO: não fornece uma mensagem de erro como antes, mas ao enviar o email (parece normal), nenhum email é realmente enviado e há um erro no email:

"550-Mailbox unknown. Ou não há uma caixa de correio associada a este 550-name ou você não tem autorização para vê-lo. 550 5.1.1 Usuário desconhecido"

Deixe-me saber se você tem melhor sorte.

jeffthink
fonte