メール本文にピリオド(.)のみの行がある場合の対処

今更感がありますが、、。

SMTP通信上は、原則ピリオドのみの行(正確にはCRLF.CRLF)はメールの終わりを意味します。

本文にこれらが含まれていた場合、以降のデータが無視されてしまいますので、SMTPとPOPのルール上は、本文にピリオドのみの行があった場合には、送信時にピリオドをさらに1つつけ、受信時(POP処理時)には1つピリオドを落とします。

sendmailでは-iオプションで送信時に上記の処理を勝手にやってくれます。(逆に-iオプションを付けないとデフォルトでピリオドだけの行を終端と見なし以降は無視される、という仕様に驚き)

 

qmailやPostfixで、sendmailラッパを利用している場合でも、きちんと動作します。

 

参考サイト)

https://fumiyas.github.io/2014/12/13/sendmail.postfix-advent-calendar.html