携帯端末とbare LFとqmail
こんにちは、亀本です。
個人的な話ですが、先日姪っ子が生まれました。ついにおじさんになってしまいました。
昨日見舞いも兼ねて病院に行ったのですが、赤ん坊は本当にかわいいですね。
自分はキャラに似合わず子供好きだったりするので、見ていると幸せな気持ちになります。
さて、今回は携帯のメール周りをいじっていて学んだ、qmailのbare LF問題についてです。
知っている人も多いトピックかもしれませんが、自分が一回これでハマったので、簡単に触れておこうと思いました。
一般に、SMTPセッションはRFCの規定により使用される改行コードはCR+LFと規定されています。
しかし、残念な事にこの規定は各種MTAやメーラーは必ずしもこのRFCに準拠しているものばかりではありません。
特に、LFのみで送ってしまうものは多く、これをbare LF (生のLF)と呼びます。
(参考:Bare LFs in SMTP)
さて、タイトルにも携帯端末と挙げましたが、携帯のメーラーの中にもこういったbare LFなメールを投げてくる機種があります。
PCの場合ならば、メーラーをバージョンアップ・変更などのユーザー側措置も可能ですが、携帯端末の場合はそうはいきません。
一度携帯を買ったら、ユーザーはその携帯端末のメーラーとしばらくお付き合いすることになるため、メーラーが規約違反だから!なんていってユーザーをはじいてしまうのは流石に可哀そう。。。というか、事情を知らないユーザーには説明できませんね。
そのため、こういった問題はサーバー側で吸収するしかありません。
SendmailやPostfixなどのMTAはbare LF を含んだメールでも処理してくれるので、それほど大きな心配はいりません。
ですが、qmailではこのようなLFのみの場合はエラーとしてはじいてしまいます。このため、qmailで携帯端末のような問題を回避し得ないユーザーを相手にする場合には、きちんと対策を講じておく必要があります。
qmailでこの問題に対処するには、qmailと併せて利用されるtcpデーモンのucspi-tcpに含まれるfixcrioというコマンドを使います。fixcrioは、行末にCRの付与されていない改行に、CRを付与した形で返してくれます。
通常、ソースパッケージからインストールしたqmailの起動スクリプトでは、qmailの起動はqmail-smtpdを直接呼び出すようになっていますが、これをfixcrio経由で呼び出すように変更します。
このようにすることで、bare LFで送ってきてしまうようなRFC違反のメールでも、qmailにエラーとしてはじかれることなく処理することができるようになります。
qmailの改行コードやヘッダー周りの問題はこれだけではなく、あれこれとRFCに違反する点もあるようですが、運用上はそれらに関しても注意が必要です。
(参考:qmailのRFC違反)
細かなネタですが、参考になれば幸いです。
個人的な話ですが、先日姪っ子が生まれました。ついにおじさんになってしまいました。
昨日見舞いも兼ねて病院に行ったのですが、赤ん坊は本当にかわいいですね。
自分はキャラに似合わず子供好きだったりするので、見ていると幸せな気持ちになります。
さて、今回は携帯のメール周りをいじっていて学んだ、qmailのbare LF問題についてです。
知っている人も多いトピックかもしれませんが、自分が一回これでハマったので、簡単に触れておこうと思いました。
一般に、SMTPセッションはRFCの規定により使用される改行コードはCR+LFと規定されています。
しかし、残念な事にこの規定は各種MTAやメーラーは必ずしもこのRFCに準拠しているものばかりではありません。
特に、LFのみで送ってしまうものは多く、これをbare LF (生のLF)と呼びます。
(参考:Bare LFs in SMTP)
さて、タイトルにも携帯端末と挙げましたが、携帯のメーラーの中にもこういったbare LFなメールを投げてくる機種があります。
PCの場合ならば、メーラーをバージョンアップ・変更などのユーザー側措置も可能ですが、携帯端末の場合はそうはいきません。
一度携帯を買ったら、ユーザーはその携帯端末のメーラーとしばらくお付き合いすることになるため、メーラーが規約違反だから!なんていってユーザーをはじいてしまうのは流石に可哀そう。。。というか、事情を知らないユーザーには説明できませんね。
そのため、こういった問題はサーバー側で吸収するしかありません。
SendmailやPostfixなどのMTAはbare LF を含んだメールでも処理してくれるので、それほど大きな心配はいりません。
ですが、qmailではこのようなLFのみの場合はエラーとしてはじいてしまいます。このため、qmailで携帯端末のような問題を回避し得ないユーザーを相手にする場合には、きちんと対策を講じておく必要があります。
qmailでこの問題に対処するには、qmailと併せて利用されるtcpデーモンのucspi-tcpに含まれるfixcrioというコマンドを使います。fixcrioは、行末にCRの付与されていない改行に、CRを付与した形で返してくれます。
通常、ソースパッケージからインストールしたqmailの起動スクリプトでは、qmailの起動はqmail-smtpdを直接呼び出すようになっていますが、これをfixcrio経由で呼び出すように変更します。
- qmail-smtpd
`hostname` ....
- fixcrio
qmail-smtpd `hostname` ....
このようにすることで、bare LFで送ってきてしまうようなRFC違反のメールでも、qmailにエラーとしてはじかれることなく処理することができるようになります。
qmailの改行コードやヘッダー周りの問題はこれだけではなく、あれこれとRFCに違反する点もあるようですが、運用上はそれらに関しても注意が必要です。
(参考:qmailのRFC違反)
細かなネタですが、参考になれば幸いです。
コメントフォーム
トラックバック
-
- [linux][perl] qmailのbare LF問題でつまづいた from 岩家ぶろぐ
- はじめに 現在のお仕事で使っているサーバで Mail::Sendmail を使ったメー...
2009年02月11日 14:49
-
- Hotmailの件 from やしゅんの悪魔辞典
- Hotmail/MSN mailが一部のサイトに届かないという件で調べたところ、 以下...
2009年10月10日 00:33
最近の記事
- もうすぐ健康診断があるんだ・・・ [2010年09月02日 : 阿部恵]
- Photoshopで壁紙を作りながら、基本的な使い方を覚える [2010年09月01日 : 鴨田健次]
- はじめての共同作業 Canvas編 (node.js + websocket) [2010年09月01日 : 中川善樹]
- 「PHP×Flex(後編)」PHPテクニカルセミナー(無料)第4弾の募集を開始しました!! [2010年08月26日 : 和田記光]
- 【HTML5】Canvasでお絵かきしてみた(前編) [2010年08月25日 : 橋本章史]
- MacにgroongaのMySQL用ストレージエンジン [2010年08月23日 : 笹亀弘]
- Appleのサイトで見たiPhone4をFireworksで描いてみました-1/2 [2010年08月19日 : 和田記光]
- iPad版の会社紹介を作ってみました [2010年08月19日 : 小林有佳]
- iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (2) [2010年08月19日 : 亀本大地]
- symfonyセミナー動画無料公開! [2010年08月13日 : 岡本雄樹]



最近のコメント