MgSMTP is now compliant with the transparency guidelines
suggested in RFC 5321, section 4.5.2.
modified: Listener.pas
modified: MgSMTP.pas
modified: Relay.pas
modified: todo.txt
Done:= false;
repeat
ReadOK:= TCP.ReadLn(Line);
Done:= false;
repeat
ReadOK:= TCP.ReadLn(Line);
- if Line <> '.' then
- SpoolObject.DeliverMessagePart(Line)
+ if Line <> '.' then begin
+ { If the line starts with a dot, remove it to comply with RFC. }
+ if (Length(Line) > 1) and (Line[1] = '.') then Delete(Line, 1, 1);
+ SpoolObject.DeliverMessagePart(Line);
+ end
else
Done:= true;
until Done or (not ReadOK);
else
Done:= true;
until Done or (not ReadOK);
document what bugfix/feature are you testing with the actual build.
This will be logged to help you differentiate outputs of subsequent
builds in your logs. If left empty, it won't be added to the logs. }
document what bugfix/feature are you testing with the actual build.
This will be logged to help you differentiate outputs of subsequent
builds in your logs. If left empty, it won't be added to the logs. }
- DEVCOMMENT = 'New feature to add "Reply-To" to forwarded messages';
+ DEVCOMMENT = 'Escaping dots';
function TRelayer.DeliverMessagePart(Chunk: TStrings): boolean;
{ Sends a chunk of the message. }
function TRelayer.DeliverMessagePart(Chunk: TStrings): boolean;
{ Sends a chunk of the message. }
+ { Check for lines starting with dots. }
+ for i:= 0 to Chunk.Count - 1 do
+ if (Length(Chunk.Strings[i]) > 0) and (Chunk.Strings[i][1] = '.') then
+ Chunk.Strings[i]:= '.' + Chunk.Strings[i];
+
+ { Send text. }
Result:= TCP.WriteBuffer(PChar(Chunk.Text), Length(Chunk.Text)) <> -1;
end;
Result:= TCP.WriteBuffer(PChar(Chunk.Text), Length(Chunk.Text)) <> -1;
end;
- IPv6
- Bind to user-specified IPs
+ Option to add Reply-To header to forwarded e-mails
- IPv6
- Bind to user-specified IPs
+ Option to add Reply-To header to forwarded e-mails
++ Fix non-RFC-compliant handling of lines starting with dots
+- Fall back to HELO when remote server doesn't support EHLO
+- Implement CHUNKING extension
v0.9s:
+ Change "Client disconnected, and thread exited successfully." to "Client disconnected."
v0.9s:
+ Change "Client disconnected, and thread exited successfully." to "Client disconnected."