お堅いqmail
カスタマサポートから、「メールが届かないって言ってるんだけど、調べてくんない?」という調査依頼が舞い込んできました。
「へー、また勘違いなんじゃないの?」なんて思いながら、調べていました。
—
実際にメール配信でエラーになっているのは本当で、該当するエラーメッセージは、
CNAME_lookup_failed _temporarily._(#4.4.3)
というものでした。いろいろ調査していくと、どうやらDNSを引いた際、結果が512バイトを超える場合にこういうエラーが発生しているらしいです。(参照:DNS拡張EDNS0の解析「512バイトの壁」)
・・・qmailらしいな。月末のパッチネタですかね。
—
qmailはRFCに忠実に作られている(本当?)ということで、ちょっとお堅い実装なんですよね。
そういえば、昔いた開発チームにも手こずっていた人がいたのを思い出しました。
A message consists of header fields (collectively called "the header of the message") followed, optionally, by a body. The header is a sequence of lines of characters with special syntax as defined in this standard. The body is simply a sequence of characters that follows the header and is separated from the header by an empty line (i.e., a line with nothing preceding the CRLF). メッセージはヘッダフィールド(集合的にメッセージヘッダと呼ばれる)と、 それに続く任意のボディからなる。ヘッダはこの標準に定められた特殊な構文 による文字列のシーケンスである。ボディはヘッダに続く、ヘッダと1つの空 行で区切られた(つまり、CRLFの前に何もない行)単なる文字のシーケンスで ある。
これはRFC2822のGeneral Descriptionの一節です。
「ボディとヘッダは一つの空行で区切られている」という決まりが書いてあるのですが、qmailは二つの空行は許してくれませんでした。
ということは、Bodyは改行から始まってはいけないということになっちゃうんですけどね。
アプリケーション作っている身としてはいやはや、苦笑しちゃいますよね。