私は、自分の.Netアプリケーションを取得して、Exchangeサーバー経由でメールを送信しようとしている開発者です。私はExchangeのエキスパートではないので、資格を取得します!!
Exchangeで、次のプロパティを持つ受信コネクタを設定しました。
ネットワーク:ポート25経由ですべてのIPアドレスを許可します。
認証:Transport Layer SecurityおよびExternally Securedチェックボックスがオンになっています。
権限グループ:匿名ユーザーとExchangeサーバーのチェックボックスがオンになっています。
しかし、このPowershellステートメントをExchangeサーバーで実行すると、ローカルドメインアドレスに送信すると機能しますが、リモートドメインに送信しようとすると失敗します。
WORKS:
C:\Windows\system32>Send-Mailmessage -To [email protected] -From [email protected] -Subject testing -Body testing -SmtpServer OURSERVER
(ところで:OURSERVER = boxname.domainname.localの私の値です。これは、Exchange管理シェルを起動したときに表示される完全修飾名と同じです)。
失敗:
C:\Windows\system32>Send-Mailmessage -To [email protected] -From [email protected] -Subject testing -Body testing -SmtpServer OURSERVER
Send-MailMessage:メールボックスを使用できません。サーバーの応答は次のとおりでした:5.7.1リレーできません。行:1 char:17 + Send-Mailmessage <<<< -To [email protected] -From [email protected] -Subject Testing -Body himom -SmtpServer FTI- EX + CategoryInfo:InvalidOperation:(System.Net.Mail.SmtpClient:SmtpClient)[Send-MailMessage]、SmtpFailed RecipientException + FullyQualifiedErrorId:SmtpException、Microsoft.PowerShell.Commands.SendMailMessage
編集: @TheCleanerのアドバイスから、リレーにAdd-ADPermissionを実行しましたが、役に立ちませんでした。
[PS] C:\Windows\system32>Get-ReceiveConnector "Allowed Relay" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"
Identity User Deny Inherited
-------- ---- ---- ---------
FTI-EX\Allowed Relay NT AUTHORITY\ANON... False False
助けてくれてありがとう。マーク
非標準ポート(おそらく2525)で動作する受信コネクタを設定し、送信が許可されていることがわかっているサーバーのIPアドレスのみを受け入れるように制限する必要があります。認証で何もチェックされていないコネクタと、権限グループで匿名ユーザーがチェックされているコネクタを作成します。
その後、PSで次のコマンドを実行する必要があります。デフォルトでは、Exchangeは受信コネクタでの匿名の中継をブロックします。
Get-ReceiveConnector “Receive Connector Name” | Add-ADPermission -User “NT AUTHORITY\ANONYMOUS LOGON” -ExtendedRights “Ms-Exch-SMTP-Accept-Any-Recipient”
私は自分のExchangeサーバーでこれをテストし、Gmailと自分のドメインの両方に送信し、Exchangeドメインと偽のドメインから送信しました。
また、-port 2525
引数をPSスクリプトに渡します。
これはより回避策の可能性がありますが、スクリプトで資格情報を指定すると、Exchange側で構成を変更せずに外部に送信できるようになります。
私は、Exchangeサーバーだけがあり、ゲートウェイ/スパムフィルターなどの特別なものは何もないと仮定します。
受信コネクタ( "Relay"と呼びます):
[これらのIPアドレスを持つリモートサーバーからメールを受信する]に、このアプリを実行するサーバーのIPアドレスが含まれていることを確認してください。
認証タップでチェックする必要があるのは、「外部的に保護されている」だけです。
権限グループで確認する必要があるのは、「Exchangeサーバー」だけです。
注:元の投稿のように "匿名"を使用する場合は、Exchangeシェルでこのコマンドを実行して、そのタイプのリレーコネクタを機能させる必要があります。
Get-ReceiveConnector "NAMEOFCONNECTOR" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"
次に、IPが上記の1にあるサーバーの1つからアプリを再試行します。 Exchangeサーバー自体で直接実行しないでください。
(エッジまたはハブのいずれかに新しいSMTPコネクタを作成することにより)内部ネットワークからの認証なしで外部に中継する方法があります。
ほとんどの場合、可能であれば認証を設定した方がよいでしょう。これは、少数の専用プロセス/スクリプトなどから送信する場合にのみ機能します。
認証されていない中継が必要な場合は、新しいハブ受信コネクタルールを作成します。これを行うには(単一のExchangeサーバーがすべてのExchangeの役割を満たしていると想定):
サーバー構成->ハブトランスポート
受信に使用可能なすべてのIPアドレスを使用し、「リモートサーバーからメールを受信する」設定にリレーするリモートホストを入力します。
おそらく認証方法(おそらくTLS)は必要なく、許可グループは匿名に設定する必要があります。