X-Git-Url: http://git.megabrutal.com/?p=mgsmtp.git;a=blobdiff_plain;f=Relay.pas;h=cea792d52c5237a026db4f17fb390c413e16fd1f;hp=1e42979d761b9401daa8cbd342b45dc326330b76;hb=6f8e6026b5d35a3fa41a124032caed6621a9f86e;hpb=e975445862a1700cf05c574db979346d6ca4a4fd

diff --git a/Relay.pas b/Relay.pas
index 1e42979..cea792d 100644
--- a/Relay.pas
+++ b/Relay.pas
@@ -377,7 +377,14 @@ begin
          end;
          Result:= true;
       end
-      else AdministerMassFailure(Result);
+      else if (Response.GetNumericCode >= 500) and (Response.GetNumericCode <= 504) then begin
+         { It seems the remote site did not understand our EHLO, that is,
+           let's admit, quite odd in the 21st century...
+           Whatever, let's fall back to RFC 821 then. }
+         TCP.SendCommand(SMTP_C_HELO, MainServerConfig.Name);
+         TCP.ReadResponse(Response);
+         Result:= Response.GetNumericCode = SMTP_R_OK;
+      end;
 
       if Result then begin
          if FRoutingTarget.Auth then begin
@@ -408,7 +415,8 @@ begin
          else Authenticated:= true;
 
          if not Authenticated then AdministerMassFailure(Result);
-      end;
+      end
+      else AdministerMassFailure(Result);
 
    end
    else AdministerMassFailure(Result);