Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix dot stuffing bug #9

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

masamunecyrus
Copy link

See:
http://stackoverflow.com/questions/15224224/smtp-dot-stuffing-when-and-where-to-do-it
http://tools.ietf.org/html/rfc5321#section-4.5.2

According to the SMTP standard RFC 5321, section 4.5.2:

To allow all user composed text to be transmitted transparently, the following procedures are used:

  • Before sending a line of mail text, the SMTP client checks the first character of the line. If it is a period, one additional period is inserted at the beginning of the line.
  • When a line of mail text is received by the SMTP server, it checks the line. If the line is composed of a single period, it is treated as the end of mail indicator. If the first character is a period and there are other characters on the line, the first character is deleted.

The current version of sendemail DOES pad lines consisting ONLY of a single period (.), but DOES NOT pad lines that begin with a period with another period. The result of this behavior is that mails sent via sendemail are received with that first period truncated.

For example, if you send an e-mail with the body text:

.
.test

You will receive that e-mail with the following body text:

.
test

This bug is fixed by doing a regexp search for all lines in $message beginning with a . and replace with ...

See:
http://stackoverflow.com/questions/15224224/smtp-dot-stuffing-when-and-where-to-do-it
http://tools.ietf.org/html/rfc5321#section-4.5.2

According to the SMTP standard RFC 5321, section 4.5.2:
> To allow all user composed text to be transmitted transparently, the following procedures are used:
* Before sending a line of mail text, the SMTP client checks the first character of the line. If it is a period, one additional period is inserted at the beginning of the line.
* When a line of mail text is received by the SMTP server, it checks the line. If the line is composed of a single period, it is treated as the end of mail indicator. If the first character is a period and there are other characters on the line, the first character is deleted.

The current version of sendemail does not pad lines beginning with a period with another period, mails sent via sendemail are received with that first period truncated.

This bug is fixed by doing a regexp search for all lines in $message beginning with a "." and replace with ".."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant