Ответ сервера: 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
Другие вопросы по тегам