Постфикс: адрес получателя отклонен: пользователь неизвестен в локальной таблице получателей


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.comкак запись MX? Этот сервер действительно mail.example.com?
Берт

Ответы:


42

Я знаю, что этот вопрос немного староват, поэтому я предполагаю, что на него уже дан удовлетворительный ответ.

У меня была такая же проблема, и мне потребовалось некоторое время, чтобы понять, что происходит. Я думаю, что моя ситуация была такой же, как первоначальный вопрос.

Postfix должен пересылать всю почту на другие серверы в Интернете, он фактически не получает почту ни для каких доменов. Поэтому любая почта, отправляемая на example.com, должна пересылаться на почтовый сервер для example.com. Решение, как объяснено b techieb0y, состоит в том, чтобы удалить $ mydomain из строки:

mydestination = $mydomain, localhost.$mydomain, localhost

Эта строка сообщает postfix, что любые сообщения, отправленные на $ mydomain, должны быть получены и сохранены на этом сервере. Это не то, что я хочу, я хочу, чтобы эти сообщения отправлялись на реальный почтовый сервер для example.com. Как только я понял это и удалил example.com, почта работала, как я и ожидал. Я публикую это на случай, если это объяснение поможет кому-то еще, кто наткнется на этот вопрос в будущем.


18

Ошибка довольно информативна: целевое имя пользователя электронной почты (слева от знака @) не может быть сопоставлено ни с локальным пользователем в системе (параметры постфикса по умолчанию), ни с виртуальным доменом (поскольку ни один из них не настроен из коробка). Решение попробовать и выполнить это сопоставление контролируется списком доменов в «mydestination» (плюс любые виртуальные домены). Если этот компьютер на самом деле является основным MX домена, то у несуществующих пользователей есть испорченная почта. Если этому окну нужно только отправлять исходящие сообщения, достаточно просто удалить целевой домен из mydestination (удалив $ mydomain из списка) - он все равно будет принимать сообщения напрямую для user@hostname.domain.tld, но сообщения для user @ domain.tld пройдет процесс поиска MX для доставки в другое место.


1
Вы спасли мой день, я сходил с ума ... почему у меня есть два пользователя для себя, tstaerk и thorsten;)
Thorsten Staerk

5

Когда вы отправляете сообщение на локальный домен, postfix отвечает за проверку существования получателя. Когда вы отправляете электронное письмо на любой другой домен, postfix не несет такой ответственности.

Вам либо нужен локальный пользователь с именем test

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

или вам нужен псевдоним тестового локального пользователя в / etc / aliases

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

Вы должны быть готовы.


Есть ли способ обойти эту проверку, чтобы мне не нужно было создавать пользователя для каждого человека, которому я отправлю электронное письмо? Я не хочу использовать этот сервер в качестве основного почтового сервера, просто для отправки исходящих электронных писем из приложения при возникновении ошибок. Я бы предпочел не обновлять сервер каждый раз, когда я хочу добавить нового получателя для электронной почты приложения.
Тай Квадрат

Допустим, вы хотите отправить электронное письмо по адресу «administrator@domainz.com», и вам нужно убедиться, что ваш локальный постфикс НЕ отвечает за «domainz.com», в противном случае он попытается проверить пользователя локально. Итак, установите директиву mydomain на что-то другое, например, mydomain = local.server, и postfix отправит вашу электронную почту на сервер, отвечающий за domainz.com
Julien Vehent

1

Итак, у меня похожая проблема, и я еще не совсем понял, но это должно привести вас в правильном направлении:

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

Посмотрите на раздел «Постфикс на пустом клиенте» - я думаю, это то, что вы хотите. Я также попытался установить настройки local_recipient_maps, как указано на веб-сайте postfix на странице: LOCAL_RECIPIENT_README.html

Обе ссылки должны делать то, что нам нужно, но я не могу заставить их работать. Когда я делаю полную установку нулевого клиента, попытка telnet для отправки тестовой электронной почты SMTP не работает. Я получаю сообщение "telnet: соединение с адресом 97.74.92.30: соединение отклонено". При настройке локальной карты получателей поиск в команде RCPT TO: не выдает сообщение об ошибке, как это было раньше, но при отправке электронной почты (выглядит нормально), электронная почта фактически не отправляется, и в почтовом журнале есть ошибка:

«550-Mailbox unknown. Либо с этим именем 550 не связан почтовый ящик, либо у вас нет прав для его просмотра. 550 5.1.1 User unknown»

Дайте мне знать, если вам повезет больше.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.