접미사 : 수신자 주소가 거부 됨 : 로컬 수신자 테이블에서 사용자를 알 수 없음


30

Postfix 서버에서 동일한 도메인의 주소로 이메일을 보내려고 할 때 (예 : 서버 호스트 이름이 mail.example.com이고 test@example.com으로 이메일을 보내려고하면) 로그에 다음 오류가 있고 이메일이 전달되지 않습니다 Recipient address rejected: User unknown in local recipient table.. 다른 도메인의 주소로 보내도 아무런 문제가 없습니다. 내 /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

서버가 어떤 이유로 든 올바른 호스트 이름을 설정하지 않았을 때 전에이 문제가 발생했습니다. 도메인 설정이 mail.example.comMX 레코드로 설정되어 있습니까? 이 서버는 정말 mail.example.com입니까?
Bert

답변:


42

나는이 질문이 조금 오래되었다는 것을 알고 있으므로 이미 만족스럽게 대답했다고 가정합니다.

방금이 같은 문제가 있었고 무슨 일이 일어나고 있는지 알아내는 데 시간이 걸렸습니다. 내 상황은 원래 질문과 동일하다고 생각합니다.

Postfix는 인터넷상의 다른 서버로 모든 메일을 릴레이해야 하지만 실제로는 도메인에 대한 메일을받지 않습니다. 따라서 example.com으로 전송 된 모든 메일은 example.com의 메일 서버로 전달되어야합니다. b techieb0y에서 설명한 것처럼 해결책은 줄에서 $ mydomain을 제거하는 것입니다.

mydestination = $mydomain, localhost.$mydomain, localhost

이 줄은 postmy에게 $ mydomain으로 보낸 모든 메시지를 수신 하여이 서버에 저장하도록 지시 합니다. 그것은 내가 원하는 것이 아닙니다. 나는 그러한 메시지가 example.com의 실제 메일 서버로 보내지기를 원합니다. 이 사실을 깨닫고 example.com을 제거하면 메일이 예상대로 작동했습니다. 나는이 설명이 미래 에이 질문에 걸려 넘어지는 다른 누군가를 도울 수있는 가능성에 이것을 게시하고 있습니다.


18

오류는 매우 자기 설명 적입니다. 대상 이메일 사용자 이름 (@ 기호 왼쪽)은 시스템의 로컬 사용자 (기본 접미사 설정) 또는 가상 도메인으로 매핑 될 수 없습니다 ( 상자). 이 매핑을 시도하고 수행하는 결정은 'mydestination'의 도메인 목록과 모든 가상 도메인에 의해 제어됩니다. 이 컴퓨터가 실제로 도메인의 기본 MX 인 경우 존재하지 않는 사용자는 메일이 손상되었습니다. 이 상자가 발신 메시지 만 보내야하는 경우 대상 도메인을 목록에서 제거하면 (만약 $ mydomain을 목록에서 제거하면) 충분합니다. user@hostname.domain.tld에 대해서는 직접 메시지를 수락하지만 user @에 대해서는 메시지를 수락합니다. domain.tld는 다른 곳으로 전달하기 위해 MX 조회 프로세스를 거칩니다.


1
당신은 내가 왜, 자신을 위해 두 명의 사용자가 있습니까 ... 미친 거라고, 내 하루를 저장 tstaerk와 토르스텐)
토르스텐 Staerk

5

로컬 도메인에 메시지를 보낼 때 postfix는 수신자가 있는지 확인합니다. 다른 도메인으로 이메일을 보낼 때 postfix는 그러한 책임을지지 않습니다.

test라는 로컬 사용자가 있어야합니다.

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

또는 / etc / aliases의 테스트에서 로컬 사용자로의 별칭이 필요합니다.

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

당신은 모든 준비가되어 있어야합니다.


이 확인을 우회 할 수있는 방법이 있습니까? 이메일을 보낼 사람마다 사용자를 만들 필요가 없습니까? 이 서버를 기본 메일 서버로 사용하고 싶지 않고 오류가 발생할 때 응용 프로그램에서 발신 전자 메일을 보내기 만합니다. 응용 프로그램 전자 메일의 새 수신자를 추가 할 때마다 서버를 업데이트하지 않아도됩니다.
Tai Squared

'administrator@domainz.com'으로 이메일을 보내려고한다고 가정 해 봅시다. 로컬 postfix가 'domainz.com'을 담당하지 않는지 확인해야합니다. 그렇지 않으면 사용자를 로컬에서 확인하려고합니다. 따라서 'mydomain'지시문을 'mydomain = local.server'와 같은 다른 것으로 설정하면 postfix가 'domainz.com'을 담당하는 서버로 이메일을 보냅니다.
Julien Vehent

1

따라서 비슷한 문제가 발생하여 아직 파악하지 못했지만 올바른 방향으로 이동해야합니다.

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

"null 클라이언트의 Postfix"섹션을보십시오. 이것이 당신이 원하는 것이라고 생각합니다. 또한 페이지의 postfix 웹 사이트에 지정된 local_recipient_maps 설정을 시도했습니다 : LOCAL_RECIPIENT_README.html

두 링크 모두 우리가 여기에서 수행하는 작업을 수행해야하지만 작동시킬 수는 없습니다. 전체 null 클라이언트 설정을 수행 할 때 테스트 SMTP 전자 메일을 보내기 위해 텔넷을 시도해도 작동하지 않습니다. "telnet : 주소 97.74.92.30에 연결 : 연결이 거부되었습니다"라는 메시지가 나타납니다. 로컬 수신자 맵을 설정할 때 RCPT TO : 명령의 조회는 이전과 같은 오류 메시지를 표시하지 않지만 이메일을 보낼 때 (정상적으로 보임) 실제로 이메일이 전송되지 않으며 메일 로그에 오류가 있습니다.

"550-Mailbox unknown.이 550 이름과 관련된 사서함이 없거나 볼 권한이 없습니다. 550 5.1.1 사용자 알 수 없음"

운이 좋으면 알려주세요.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.