2

私はかなりの時間、自分が間違っていることを理解しようとしてきましたが、まだ役に立ちません。ここにいる誰かが、以下に著しく間違っているものがあるかどうかを認識できるかどうか疑問に思っていました.

私は、SMTP 経由でメッセージを PowerMTA に送信している C# .net サービスから始めて、SMTP 経由の中継をセットアップしています。

    MailMessage msg = new MailMessage();
    SmtpClient client = new SmtpClient("12.345.678.90", 25);

    client.Credentials = new NetworkCredential("myUsername", "myPassword");

    msg.Body = "<html><head></head><body><h1>Hello World</h1></body></html>";
    msg.To.Add("recipient@adomain.com");
    msg.From = new MailAddress("sender@mydomain.com", "Sender");
    msg.IsBodyHtml = true;
    msg.Subject = "Local Relay Test";

    client.Send(msg);

送信したメッセージに対応する PowerMTA 構成のスニペットを次に示します。

<smtp-user myUsername>  
  password myPassword
  source {auth}  
</smtp-user>

<source {auth}>
    always-allow-relaying yes    # allow feeding for defined users
    process-x-virtual-mta yes    # allow selection of a VirtualMTA
    max-message-size 0           # 0 implies no cap, in bytes
    smtp-service yes             # allow SMTP service
    default-virtual-mta myVmta
    require-auth true
    log-connections yes
    log-commands    yes         # WARNING: verbose!
</source>

また、ロギングをオンにしalways-allow-relayingて no に設定した一般的なソース 0/0 もあります。

コードを実行すると、次の例外が発生します。

An unhandled exception of type 'System.Net.Mail.SmtpFailedRecipientException' occurred in System.dll

Additional information: Mailbox unavailable. The server response was: 5.7.1 relaying denied: <recipient@adomain.com> in "RCPT TO:<recipient@adomain.com>"

PowerMTA でログを表示すると、{auth} ソースではなく、0/0 の一般的なルールに該当するようです。ユーザー名とパスワードが渡された形跡はまったくありません。明らかな何かが欠けていますか?

また、これを PowerMTA がホストされているサーバーでローカルにテストしました。{auth} ソースではなく、0/0 ソースにヒットするだけです。

4

1 に答える 1