服务器响应是:5.7.1中继被拒绝

时间:2015-07-24 10:03:30

标签: c# smtp smtp-auth powermta

我一直试图弄清楚我在相当长的时间内做错了什么,但仍无济于事。我想知道这里是否有人能够识别出以下内容是否存在明显错误。

我通过SMTP设置中继,从C#.net服务开始,我通过SMTP向PowerMTA发送消息,我使用以下方法:< / p>

    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>

我还有一个通用源0/0,其日志已开启,always-allow-relaying设置为否。

当我运行我的代码时,我得到以下异常:

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中查看日志时,它似乎达到了我的一般规则0/0而不是{auth}源。绝对没有传递用户名和密码的迹象。我错过了一些明显的东西吗?

我还在托管PowerMTA的服务器上本地测试了它,它只是点击0/0源而不是{auth}源。

2 个答案:

答案 0 :(得分:2)

如果您连接的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/

答案 1 :(得分:0)

在SSH客户端中使用

telnet localhost 25
mail from:support@example.com
rcpt to:admin@google.com
data
.
quit