(別のサーバーから)サーバー上のローカルアカウントに電子メールを送信しようとすると、次のエラーが発生します。
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-実際にはサーバーのホスト名)を除いて、すべてのサブドメインで機能します。
そして..数時間後、私は問題を見つけました:
localhost.localdomain
は、subdomain.domain
と一緒に/etc/mail/local-Host-names
に配置する必要があります。
したがって、/etc/mail/local-Host-names
の正しいコンテンツは次のようになります。
localhost
localhost.localdomain
subdomain.domain.com
それは動作しませんあなたが使用するだけの場合:
localhost
subdomain.domain.com
"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
Sendmail.cfを確認しました。 Relaying denied. IP name possibly forged
に与えるエラーメッセージは、Relay_ok
ルールセットで発生します。 Relay_ok
はBasic_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_ok
(Basic_check_rcpt
の前にRelay_ok
で再度呼び出されます)がそれを決定することを意味します。
OPが提供する説明から、Ubuntusendmailは/etc/hosts
の名前を$ = wに自動的に含めないようです。そのため、localhost.localdomainを具体的に含める必要があります。しかし、なぜ?
[元のポスターが完全なsendmail.mcを投稿していたら、それは大いに役立ちました]