我一直在试图找出我在做错了什么时间,但仍无济于事。我想知道这里是否有人可以识别以下内容是否明显不正确。

我正在设置通过SMTP中继,从C#.net服务开始,在这里我通过SMTP向PowerMTA发送消息,我正在使用以下方法:

    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("[email protected]");
    msg.From = new MailAddress("[email protected]", "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>


我也有一个通用的源0/0,其中已启用日志记录,并且always-allow-relaying设置为no。

当我运行代码时,出现以下异常:

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: <[email protected]> in "RCPT TO:<[email protected]>"


尽管当我在PowerMTA中查看日志时,似乎符合我的一般规则0/0,而不是{auth}源。绝对没有迹象表明会传递用户名和密码。我是否缺少明显的东西?

我还在承载PowerMTA的服务器上在本地进行了测试,它只是命中0/0源,而不是{auth}源。

最佳答案

如果您要连接的IP未在允许SMTP中继的<source>指令中定义,则PMTA将生成5.7.1中继拒绝的拒绝。在您的配置中添加以下内容:

<source 1.2.3.4/24>
    always-allow-relaying yes
    smtp-service yes
</source>


在代码外进行手动SMTP测试可能会很有用;我发现swaks是解决此问题的最佳工具(至少在Linux系统上)-http://www.jetmore.org/john/code/swaks/

关于c# - 服务器响应为:5.7.1中继被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31607657/

10-10 15:16