
내 postfix 서버에서 동일한 도메인의 주소로 이메일을 보내려고 할 때(예를 들어 서버 호스트 이름이 mail.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
답변1
나는 이 질문이 약간 오래된 것이라는 것을 알고 있으므로 이미 만족스럽게 대답했다고 가정합니다.
방금 이와 같은 문제가 있었고 무슨 일이 일어나고 있는지 파악하는 데 시간이 걸렸습니다. 내 상황이 원래 질문과 같았다고 생각합니다.
Postfix는 릴레이해야합니다모두메일을 인터넷의 다른 서버로 보내더라도 실제로 어떤 도메인의 메일도 수신하지 않습니다. 따라서 example.com으로 전송된 모든 메일은 example.com의 메일 서버로 전달되어야 합니다. b techieb0y에서 설명했듯이 해결책은 다음 줄에서 $mydomain을 제거하는 것입니다.
mydestination = $mydomain, localhost.$mydomain, localhost
이 줄은 $mydomain으로 전송된 모든 메시지를 $mydomain에서 수신하고 저장함을 postfix에 알려줍니다.이것섬기는 사람. 그것은 내가 원하는 것이 아닙니다. 나는 해당 메시지가 example.com의 실제 메일 서버로 전송되기를 원합니다. 이것을 깨닫고 example.com을 제거하자 메일은 예상대로 작동했습니다. 이 설명이 나중에 이 질문을 우연히 발견한 다른 누군가에게 도움이 될 수 있기를 바라며 이 글을 게시합니다.
답변2
오류는 매우 간단합니다. 대상 이메일 사용자 이름(@ 기호 왼쪽)은 시스템의 로컬 사용자(기본 접미사 설정)나 가상 도메인(외부 구성이 없기 때문에)에 매핑될 수 없습니다. 상자). 이 매핑을 시도하고 수행하기로 한 결정은 'mydestination'(모든 가상 도메인 포함)의 도메인 목록에 의해 제어됩니다. 이 시스템이 실제로 도메인의 기본 MX라면 존재하지 않는 사용자의 메일이 손상된 것입니다. 이 상자에서 보내는 메시지만 보내야 하는 경우 mydestination에서 대상 도메인을 제거하면 됩니다(목록에서 $mydomain을 제거하여).[이메일 보호됨], 하지만 다음에 대한 메시지는 다음과 같습니다.[이메일 보호됨]다른 곳으로 배송하기 위해 MX 조회 프로세스를 거치게 됩니다. 전송 맵(개별 도메인의 경우)을 설정하거나 스마트호스트(모든 메일의 경우)를 구성하여 프로세스를 단축할 수 있습니다.
답변3
로컬 도메인으로 메시지를 보낼 때 postfix는 수신자가 존재하는지 확인하는 역할을 합니다. 다른 도메인으로 이메일을 보낼 때 postfix는 그러한 책임을 지지 않습니다.
test라는 로컬 사용자가 필요합니다.
useradd -s /bin/bash -d /home/test -U test
또는 테스트에서 /etc/aliases의 로컬 사용자에게 별칭이 필요합니다.
echo "test: root" >> /etc/aliases
postalias /etc/aliases
모든 준비가 완료되어야 합니다.
답변4
파일 에 /etc/postfix/main.cf
line을 추가합니다 local_recipient_maps =
. 그렇습니다. 빈 값이 있습니다(기본적으로 값은 활성이고 비어 있지 않으므로 해당 행에 빈 값을 추가해야 합니다).