Когда я пытаюсь отправить электронное письмо на своем постфиксном сервере на адрес в том же домене (например, если имя хоста сервера - 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
Я знаю, что этот вопрос немного устарел, поэтому предполагаю, что на него уже дан удовлетворительный ответ.
У меня была такая же проблема, и мне потребовалось время, чтобы понять, что происходит. Я думаю, что моя ситуация была такой же, как и в исходном вопросе.
Postfix должен ретранслировать все почты на другие серверы в Интернете, он фактически не получает почту ни для каких доменов. Таким образом, любая почта, отправляемая на example.com, должна пересылаться на почтовый сервер example.com. Решение, как объяснил b techieb0y, состоит в том, чтобы удалить $ mydomain из строки:
mydestination = $mydomain, localhost.$mydomain, localhost
Эта строка сообщает постфиксу, что любые сообщения, отправленные на $ mydomain, должны быть получены и сохранены на этот сервер. Это не то, что я хочу, я хочу, чтобы эти сообщения отправлялись на настоящий почтовый сервер для example.com. Как только я понял это и удалил example.com, почта работала так, как я ожидал. Я публикую это на случай, если это объяснение поможет кому-то еще, кто столкнется с этим вопросом в будущем.
Ошибка довольно информативна: целевое имя пользователя электронной почты (слева от знака @) не может быть сопоставлено ни с локальным пользователем в системе (настройки постфикса по умолчанию), ни с виртуальным доменом (поскольку ни один из них не настроен вне коробка). Решение попробовать выполнить это сопоставление контролируется списком доменов в mydestination (плюс любые виртуальные домены). Если этот компьютер на самом деле является основным MX домена, то несуществующие пользователи имеют поврежденную почту. Если этому ящику нужно только отправлять исходящие сообщения, достаточно простого удаления целевого домена из mydestination (путем удаления $ mydomain из списка) - он по-прежнему будет принимать сообщения напрямую для user@hostname.domain.tld, но сообщения для user @ domain.tld будет проходить процесс поиска MX для доставки в другое место. Вы можете сократить этот процесс, настроив карту транспорта (для отдельных доменов) или настроив смарт-хост (для всей почты).
Когда вы отправляете сообщение в свой локальный домен, postfix отвечает за проверку того, что получатель существует. Когда вы отправляете электронное письмо на любой другой домен, postfix не несет такой ответственности.
Вам либо нужен локальный пользователь с именем test
useradd -s /bin/bash -d /home/test -U test
или вам нужен псевдоним от test к локальному пользователю в / etc / aliases
echo "test: root" >> /etc/aliases
postalias /etc/aliases
У вас должно быть все готово.
Итак, у меня аналогичная проблема, и я еще не понял ее, но это должно двигать вас в правильном направлении:
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-name, либо у вас нет разрешения на его просмотр. 550 5.1.1 User unknown»
Дай мне знать, если тебе повезет больше.
У меня была эта ошибка при отправке писем на псевдоним. Postfix использует /etc/aliases.db, который создается из / etc / aliases с помощью следующей команды. Это устранило ошибку:
newaliases