web-dev-qa-db-ja.com

Ubuntusendmail「リレーが拒否されました。IP名が偽造されている可能性があります」(コマンドへのrcptへの応答)

(別のサーバーから)サーバー上のローカルアカウントに電子メールを送信しようとすると、次のエラーが発生します。

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

これが私がすることです:

[email protected]:~$ 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: <[email protected]>
250 2.1.0 <[email protected]>... Sender ok
RCPT TO: <[email protected]>
550 5.7.1 <[email protected]>... Relaying denied. IP name possibly forged [W.X.Y.Z]

問題は、RCPT TO: <[email protected]>の代わりにRCPT TO: <[email protected]>を使用すれば、問題なくメールを送信できることです。

私が現在使用している構成を以下に示します。

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-ホスト名:

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: <[email protected]>
250 2.1.5 <[email protected]>... Recipient ok

したがって、私が興味を持っているサブドメイン(subdomain.domain.com-実際にはサーバーのホスト名)を除いて、すべてのサブドメインで機能します。

3
Razvan

そして..数時間後、私は問題を見つけました:

localhost.localdomainは、subdomain.domainと一緒に/etc/mail/local-Host-namesに配置する必要があります。

したがって、/etc/mail/local-Host-namesの正しいコンテンツは次のようになります。

localhost
localhost.localdomain
subdomain.domain.com

それは動作しませんあなたが使用するだけの場合:

localhost
subdomain.domain.com
0
Razvan

"Relaying denied"suggets that sendmail at mail.subdomain.domain.comは、subdomain.domain.comをローカルの電子メールドメイン(ホストされている電子メールドメイン)として扱いません。

Mail.subdomain.domain.comホストの/ etc/mail/local-Host-nameファイルを変更した後、sendmailサーバーを再起動/再ロードしましたか?

はい=> mail.subdomain.domain.comホストのrootによって実行される以下のコマンドによって何が報告されますか?

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

Sendmail.cfを確認しました。 Relaying denied. IP name possibly forgedに与えるエラーメッセージは、Relay_okルールセットで発生します。 Relay_okBasic_check_rcptによって実行され、次にcheckrcptによって実行され、次にcheck_rcptによって実行されます(紛らわしいですが、私は知っています)。このエラーは、$&{client_resolve}の値がFORGEDの場合に発生します。これは、順方向ルックアップが逆引き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_okBasic_check_rcptの前にRelay_okで再度呼び出されます)がそれを決定することを意味します。

OPが提供する説明から、Ubuntusendmailは/etc/hostsの名前を$ = wに自動的に含めないようです。そのため、localhost.localdomainを具体的に含める必要があります。しかし、なぜ?

[元のポスターが完全なsendmail.mcを投稿していたら、それは大いに役立ちました]

1
adamo