很长一段时间以来,我一直试图找出自己做错了什么,但仍然无济于事。我想知道这里是否有人可以识别以下内容是否存在明显不正确的地方。
我正在通过 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("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
设置为 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: <recipient@adomain.com> in "RCPT TO:<recipient@adomain.com>"
虽然当我在 PowerMTA 中查看日志时,它似乎符合我的一般规则 0/0 而不是 {auth} 源。绝对没有传递用户名和密码的迹象。我错过了一些明显的东西吗?
我还在托管 PowerMTA 的服务器上进行了本地测试,它只是再次命中 0/0 源而不是 {auth} 源。