Назад | Перейти на главную страницу

Ubuntu sendmail «Ретрансляция запрещена. Имя IP возможно подделано »(в ответ на команду rcpt)

Когда я пытаюсь отправить электронное письмо (с другого сервера) на локальную учетную запись на моем сервере, я получаю следующую ошибку:

Relaying denied. IP name possibly forged [W.X.Y.Z]

Вот что я делаю:

user@a-different-domain.com:~$ telnet subdomain.domain.com 25
Trying A.B.C.D...
Connected to subdomain.domain.com.
Escape character is '^]'.
220 subdomain.domain.com ESMTP Sendmail 8.14.4/8.14.4/Debian-2ubuntu1; ...
HELO a-different-domain.com
250 subdomain.domain.com Hello ...
MAIL FROM: <user@a-different-domain.com>
250 2.1.0 <user@a-different-domain.com>... Sender ok
RCPT TO: <user@subdomain.domain.com>
550 5.7.1 <user@subdomain.domain.com>... Relaying denied. IP name possibly forged [W.X.Y.Z]

Проблема в том, что я могу нормально отправлять электронные письма, если использую RCPT TO: <user@mail.subdomain.domain.com> вместо того RCPT TO: <user@subdomain.domain.com>

См. Ниже конфигурацию, которую я использую в настоящее время.

Конфигурация DNS:

Host                 Type  Priority  Redirect to
subdomain.domain.com MX    10        mail.subdomain.domain.com
subdomain.domain.com A     10        A.B.C.D

Конфигурация почтового сервера:

OS: Ubuntu
Email Server: sendmail

В / etc / mail / access у меня есть (среди прочего):

mail.subdomain.domain.com
subdomain.domain.com

/ etc / mail / local-host-names:

localhost
mail.subdomain.domain.com
subdomain.domain.com

Что касается маскировки, вот что у меня в /etc/mail/sendmail.mc:

MASQUERADE_AS(`subdomain.domain.com')dnl
MASQUERADE_DOMAIN(`subdomain.domain.com.')dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl

Просто для пояснений: mail.subdomain.domain.com и subdomain.domain.com указывают на один и тот же IP-адрес.

================= UPDATE1 =================

@Andrzej A. Filip

Да, я перезапустил sendmail.

Вот результат echo '$=w' | sendmail -Am -bt:

root@subdomain:/etc/mail# echo '$=w' | sendmail -Am -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> [A.B.C.D]
mail.subdomain.domain.com
[ip6-loopback]
localhost
subdomain
ip6-localhost
[127.0.0.1]
[127.0.0.2]
subdomain.domain.com
[ip6-localhost]
ip6-loopback

================= UPDATE2 =================

Я протестировал и обнаружил (без изменения конфигурации DNS), что если я добавлю subdomainXXX.domain.com (где subdomainXXX - любая строка) в / etc / mail / local-host-names, а затем я тестирую отправку электронной почты с удаленного сервера это просто работает:

user@remote-server:/# telnet subdomain.domain.com 25
Trying A.B.C.D...
Connected to subdomain.domain.com.
Escape character is '^]'.
220 subdomain.domain.com ESMTP Sendmail 8.14.4/8.14.4/Debian-2ubuntu1; ...
HELO remote-server
250 subdomain.domain.com Hello ....
MAIL FROM: <...>
250 2.1.0 <...>... Sender ok
RCPT TO: <root@subdomainXXX.domain.com>
250 2.1.5 <root@subdomainXXX.domain.com>... Recipient ok

Таким образом, он работает для любого поддомена, кроме того, который меня интересует (subdomain.domain.com - который на самом деле является именем хоста сервера).

Я посмотрел свой sendmail.cf. Сообщение об ошибке, которое вы даете Relaying denied. IP name possibly forged происходит в Relay_ok набор правил. Relay_ok выполняется Basic_check_rcpt, который, в свою очередь, выполняется checkrcpt который, в свою очередь, выполняется check_rcpt (сбивает с толку, я знаю). Ошибка возникает, когда значение для $&{client_resolve} ПОДДЕЛЬНО, что означает, что прямой поиск не соответствует обратному поиску в DNS.

Итак, вопрос: если все, что вы меняете, это либо включение, либо удаление localhost.localdomain из /etc/mail/local-host-names, Почему Relay_ok отклоняет или принимает электронную почту на основании этого факта? Интересные строки в Relay_ok является:

SRelay_ok
R$*                     $: $&{client_addr}
:
R$*                     $: < $&{client_resolve} >

Когда localhost.localdomain не включен в /etc/mail/local-host-name мы получаем <FORGED> ответ от $&{client_resolve}. Когда он включен, мы этого не получаем. Итак, решение о ретрансляции происходит до звонка Relay_ok. Это означает, что Rcpt_ok (снова позвонил Basic_check_rcpt перед Relay_ok) решает это.

Теперь из описания, которое дает OP, похоже, что Ubuntu sendmail не включает автоматически имена в /etc/hosts в $ = w, и поэтому необходимо специально включить localhost.localdomain. Но почему?

[Если бы исходный постер разместил полный sendmail.mc, он бы очень помог]

"Relaying denied"suggets, которые sendmail на mail.subdomain.domain.com не обрабатывает subdomain.domain.com как локальный домен электронной почты, домен электронной почты, размещенный на нем.

Вы перезагружали / перезагружали сервер sendmail после изменения файла / etc / mail / local-host-name на хосте mail.subdomain.domain.com?

ДА => Что сообщает приведенная ниже команда, выполняемая пользователем root на хосте mail.subdomain.domain.com?

echo '$=w' | sendmail -Am -bt

И ... через несколько часов я обнаружил проблему:

localhost.localdomain нужно поставить рядом с subdomain.domain в /etc/mail/local-host-names.

Итак, правильный контент для /etc/mail/local-host-names должно быть:

localhost
localhost.localdomain
subdomain.domain.com

Оно делает НЕ РАБОТАЕТ если вы используете только:

localhost
subdomain.domain.com