Ответ сервера: 5.7.1 отказ в ретрансляции
Я пытался выяснить, что я делаю неправильно, в течение значительного времени, но все еще безрезультатно. Мне было интересно, может ли кто-нибудь здесь узнать, есть ли что-то заметно неправильное со следующим.
Я настраиваю ретрансляцию через 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
установить на нет.
Когда я запускаю свой код, я получаю следующее исключение:
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 ответа
PMTA сгенерирует 5.7.1 ретрансляцию отклоненных отклонений, если IP-адрес, с которого вы подключаетесь, не определен в <source>
директива, которая позволяет ретрансляцию SMTP. Добавьте что-то вроде этого в вашу конфигурацию:
<source 1.2.3.4/24>
always-allow-relaying yes
smtp-service yes
</source>
Это может быть полезно для ручного тестирования SMTP вне вашего кода; Я считаю, что swaks - лучший инструмент для этого (по крайней мере, в системах Linux) - http://www.jetmore.org/john/code/swaks/
Используйте это в вашем SSH-клиенте
telnet localhost 25
mail from:support@example.com
rcpt to:admin@google.com
data
.
quit