Postfix: Địa chỉ người nhận bị từ chối: Người dùng không xác định trong bảng người nhận cục bộ


30

Khi tôi cố gắng gửi email trên máy chủ postfix của mình đến một địa chỉ trên cùng một tên miền (ví dụ: nếu tên máy chủ của máy chủ là mail.example.com và tôi cố gắng gửi email đến test@example.com), tôi nhận được lỗi sau trong nhật ký và email không được gửi : Recipient address rejected: User unknown in local recipient table. Nếu tôi gửi đến một địa chỉ trên một tên miền khác, tôi không gặp vấn đề gì. Đây là tập tin /etc/postfix/main.cf của tôi:

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

Tôi đã gặp phải điều này trước đây khi các máy chủ không có tên máy chủ chính xác được đặt vì bất kỳ lý do gì. Là thiết lập tên miền của bạn với mail.example.comnhư bản ghi MX của bạn? Là máy chủ này thực sự mail.example.com?
Bert

Câu trả lời:


42

Tôi biết câu hỏi này hơi cũ, vì vậy tôi cho rằng nó đã được trả lời thỏa đáng.

Tôi chỉ gặp vấn đề tương tự, và tôi phải mất một thời gian để tìm hiểu chuyện gì đang xảy ra. Tôi nghĩ rằng tình huống của tôi giống như câu hỏi ban đầu.

Postfix nên chuyển tiếp tất cả thư đến các máy chủ khác trên internet, nó không thực sự nhận thư cho bất kỳ tên miền nào. Vì vậy, bất kỳ thư nào được gửi đến example.com nên được chuyển tiếp đến máy chủ thư cho example.com. Giải pháp, như b techieb0y đã giải thích, là xóa $ mydomain khỏi dòng:

mydestination = $mydomain, localhost.$mydomain, localhost

Dòng này cho biết postfix rằng bất kỳ tin nhắn nào được gửi tới $ mydomain sẽ được nhận và lưu trữ trên máy chủ này . Đó không phải là điều tôi muốn, tôi muốn những tin nhắn đó được gửi đến máy chủ thực tế cho example.com. Khi tôi nhận ra điều này và xóa example.com, thư hoạt động như tôi mong đợi. Tôi sẽ đăng bài này với khả năng giải thích này sẽ giúp người khác tình cờ gặp phải câu hỏi này trong tương lai.


18

Lỗi này khá tự mô tả: tên người dùng email đích (bên trái dấu @) không thể được ánh xạ tới người dùng cục bộ trên hệ thống (cài đặt hậu tố mặc định), cũng như không có tên miền ảo (vì không có tên nào được cấu hình ngoài cái hộp). Quyết định thử và thực hiện ánh xạ này được kiểm soát bởi danh sách các tên miền trong 'mydestination' (cộng với bất kỳ miền ảo nào). Nếu máy này thực tế là MX chính của tên miền, thì người dùng không tồn tại đã bị hỏng thư. Nếu hộp này chỉ cần gửi tin nhắn đi, chỉ cần xóa tên miền đích khỏi mydestination (bằng cách xóa $ mydomain khỏi danh sách) là đủ - nó vẫn sẽ chấp nhận tin nhắn trực tiếp cho user@hostname.domain.tld, nhưng tin nhắn cho người dùng @ domain.tld sẽ trải qua quá trình tra cứu MX để giao hàng ở nơi khác.


1
bạn đã cứu ngày của tôi, tôi đang phát điên ... tại sao tôi có hai người dùng cho mình, tstaerk và thorsten;)
Thorsten Staerk

5

Khi bạn gửi tin nhắn đến tên miền cục bộ của mình, postfix có trách nhiệm kiểm tra xem người nhận có tồn tại không. Khi bạn gửi email đến bất kỳ tên miền nào khác, postfix không có trách nhiệm như vậy.

Bạn cần phải có một người dùng cục bộ được gọi là thử nghiệm

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

hoặc, bạn cần một bí danh từ kiểm tra đến người dùng cục bộ trong / etc / bí danh

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

Một bạn nên được thiết lập tất cả.


Có cách nào để bỏ qua kiểm tra này để tôi không phải tạo người dùng cho mỗi người mà tôi sẽ gửi email không? Tôi không muốn sử dụng máy chủ này làm máy chủ thư chính của chúng tôi, chỉ để gửi email đi từ một ứng dụng khi xảy ra lỗi. Tôi muốn không phải cập nhật máy chủ mỗi lần tôi muốn thêm người nhận mới cho email ứng dụng.
Tai Squared

Giả sử bạn muốn gửi email đến 'Administrator@domainz.com', điều bạn cần làm là đảm bảo rằng hậu tố địa phương của bạn KHÔNG chịu trách nhiệm về 'domainz.com', nếu không, nó sẽ cố gắng xác thực người dùng cục bộ. Vì vậy, hãy đặt lệnh 'mydomain' thành một cái gì đó khác, như 'mydomain = local.server' và postfix sẽ gửi email của bạn đến máy chủ chịu trách nhiệm cho 'domainz.com'
Julien Vehent

1

Vì vậy, tôi đang gặp một vấn đề tương tự và chưa tìm ra nó, nhưng điều này sẽ đưa bạn đi đúng hướng:

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

Nhìn vào phần "Postfix on a null client" - Tôi nghĩ đó là những gì bạn muốn. Tôi cũng đã thử đặt cài đặt local_recipient_maps như được chỉ định trên trang web của postfix tại trang: LOCAL_RECIPIENT_README.html

Cả hai liên kết sẽ làm những gì chúng ta sau đây, nhưng tôi không thể làm cho chúng hoạt động. Khi tôi thực hiện thiết lập máy khách null hoàn toàn, cố gắng telnet để gửi email kiểm tra SMTP không hoạt động. Tôi nhận được "telnet: kết nối tới địa chỉ 97.74.92.30: Kết nối bị từ chối". Khi thiết lập bản đồ người nhận cục bộ, việc tra cứu trong lệnh RCPT TO: không đưa ra thông báo lỗi như trước đây, nhưng khi gửi email (trông bình thường), không có email nào thực sự được gửi và có lỗi trong maillog:

"550-Hộp thư không xác định. Không có hộp thư nào được liên kết với tên 550 này hoặc bạn không có quyền xem nó. 550 5.1.1 Người dùng không xác định"

Hãy cho tôi biết nếu bạn có may mắn hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.