Я использую Postfix для связи с внешним сервером и отправки почты. Каждый раз, когда я пытаюсь отправить почту с помощью Postfix, я получаю такую ошибку:
(host mx2.seznam.cz[77.75.76.32] said: 451 Local Error (in reply to end of DATA command))
Через некоторое время отладки я получил транскрипцию SMTP:
220 2.0.0 Seznam SMTP server waiting for your HELO/EHLO
EHLO alpha.tbedrich.cz
250-Email.Seznam.cz - Email zdarma na cely zivot ESMTP
250-8BITMIME
250-SIZE 18000000
250-ENHANCEDSTATUSCODES
250 X-SZNEXTENSIONS
MAIL FROM:<ja@tbedrich.cz> SIZE=1007
250 2.1.0 Ok <ja@tbedrich.cz>
RCPT TO:<tb@seznam.cz>
250 2.1.5 Ok <tb@seznam.cz>
DATA
354 Start mail input; end with <CRLF>.<CRLF>
Received: from mail-lb0-f176.google.com (mail-lb0-f176.google.com [209.85.217.176])
by alpha.tbedrich.cz (Postfix) with ESMTPSA id 8520F401DB
for <tb@seznam.cz>; Thu, 27 Aug 2015 19:09:37 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tbedrich.cz; s=mail;
t=1440695377; bh=CG6CavtqSpj8fj6WkmsWGRsGNN0Qa3sWp3MV/1BiTCY=;
h=From:Date:Subject:To:From;
b=GtnSxBgTLQsBIjn0DTUAm7zgfiIUOJjunmWHeCLSEit+QqyaGy63QzLd4yvzJYNNW
6Fpc2LySSMB3QfxvhNOaxZZaP1aBUVaqH8nGulPgKeC5B67HgKGIpIP8o8F8oEDZyc
G7TPnXC6zA62Nr5FzSlmMYpWwQh4HR2RYEJDvFrU=
Received: by lbbtg9 with SMTP id tg9so15579426lbb.1
for <tb@seznam.cz>; Thu, 27 Aug 2015 10:09:36 -0700 (PDT)a
X-Received: by 10.152.21.231 with SMTP id y7mr2710607lae.63.1440695376852;
Thu, 27 Aug 2015 10:09:36 -0700 (PDT)
MIME-Version: 1.0
From: =?UTF-8?B?VG9tw6HFoSBCZWTFmWljaA==?= <ja@tbedrich.cz>
Date: Thu, 27 Aug 2015 17:09:27 +0000
Message-ID: <CALS8Sqg8HQVmHt2UOiLfRMmkHyzzD2G2nKGPhqnh=3hjKW=NOA@mail.gmail.com>
Subject: test
To: tb@seznam.cz
Content-Type: multipart/alternative; boundary=089e0158aea02abfcc051e4e0861
--089e0158aea02abfcc051e4e0861
Content-Type: text/plain; charset=UTF-8
--089e0158aea02abfcc051e4e0861
Content-Type: text/html; charset=UTF-8
<div dir="ltr"><br></div>
--089e0158aea02abfcc051e4e0861--
.
451 Local Error
502 5.5.1 Command ' by ' not implemented.
502 5.5.1 Command ' for' not implemented.
502 5.5.1 Command 'DKIM' not implemented.
502 5.5.1 Command ' t=1' not implemented.
502 5.5.1 Command ' h=F' not implemented.
502 5.5.1 Command ' b=G' not implemented.
502 5.5.1 Command ' 6F' not implemented.
502 5.5.1 Command ' G7' not implemented.
502 5.5.1 Command 'Rece' not implemented.
502 5.5.1 Command ' ' not implemented.
502 5.5.1 Command 'X-Re' not implemented.
502 5.5.1 Command ' Thu' not implemented.
502 5.5.1 Command 'MIME' not implemented.
502 5.5.1 Command 'From' not implemented.
502 5.5.1 Command 'Date' not implemented.
502 5.5.1 Command 'Mess' not implemented.
502 5.5.1 Command 'Subj' not implemented.
502 5.5.1 Command 'To: ' not implemented.
502 5.5.1 Command 'Cont' not implemented.
501 Command too short.
502 5.5.1 Command '--08' not implemented.
502 5.5.1 Command 'Cont' not implemented.
501 Command too short.
501 Command too short.
501 Command too short.
502 5.5.1 Command '--08' not implemented.
502 5.5.1 Command 'Cont' not implemented.
501 Command too short.
502 5.5.1 Command '<div' not implemented.
501 Command too short.
502 5.5.1 Command '--08' not implemented.
501 Command too short.
QUIT
Почему сторонний сервер не понимает коммуникации? Я не вижу в этом ничего плохого.
Почтовый сервер получателя подскажет:
451 Local Error
Это означает, что на их сервере возникла проблема, и вам следует попробовать позже.
Из вашего журнала представляется вероятным, что их почтовый сервер вышел из строя после получения первой строки содержимого электронной почты, и что каждая строка в электронном письме после этого интерпретировалась как новая команда, что не удалось, поскольку они не являются допустимыми командами SMTP.
Я предполагаю, что вы скопировали содержимое электронного письма; если бы вы вставляли по одной строке вместо всего электронного письма, вы бы получили сообщение об ошибке сразу после этой первой строки, и вы бы не получили остальные сообщения об ошибках, что сильно усложнило бы проблему яснее.
Поскольку проблема связана с их почтовым сервером, а не с вами, вы ничего не можете сделать, чтобы исправить это. Вам придется подождать или, возможно, позвонить им.
Вроде проблема CR + LF. Вы уверены, что отправляете оба управляющих символа для конца строк в DATA? Не каждый MTA чувствителен к этому, AFAIK.
Я не думаю, что изменения следует вносить в Postfix, а в оригинальное приложение (генерирующее сообщение). Попробуйте сохранить сообщение в файле UNIX (только LF), затем запустите cat file |sendmail -i -t
, затем преобразуйте файл в формат DOS (CR + LF) с помощью todos file
, затем снова cat file |sendmail -i -t
. Проверяйте почтовые журналы. Этот тест должен сказать вам, в чем проблема.
Развернуть заявление из раздела комментариев
В SMTP-транзакции участвуют две стороны: отправитель и получатель. Оба сервера должны иметь какое-то соглашение, когда разговаривают друг с другом. Когда один сервер жалуется на несоответствие протокола, как указано выше, он либо ваш сервер, либо их были неправильно настроены.
Чтобы отладить его, попробуйте отправить электронное письмо на другой сервер. Если проблема в вас, то вы не сможете поговорить с остальными. Также попробуйте отправить письмо получателю через другой почтовый сервер. Если на другом сервере такая же проблема, возможно, получатель был неправильно настроен.