Outlook 2016以降でメールを送信しようとすると `555 5.5.4 unsupported option SMTPUTF8` エラーが発生する

現象

2016以降のOutlookでメールを送信しようとすると以下のエラーが発生する現象に遭遇。

555 5.5.4 unsupported option SMTPUTF8

ちなみに、現象は特定のメールアドレスのみで発生し、他のアドレスでは発生しませんでした。

原因

今回の原因はメールアドレスに全角文字が混じっていたことでした。例えばhoge.hoge@example.comのような形(ここでは最初のhのみ全角文字になっている)ですね。

Outlookの場合、特に宛先やCC、アドレス帳といった本来ASCII文字しか来ないであろう欄に入力された文字列文字の種類によっては全角文字でも半角っぽい表示になっており、メモ帳などの他のアプリケーションにメールアドレスをコピペしないと判別が付きませんでした。

Outlookで宛先も件名も最初の`h`のみ全角文字で入力した様子
Outlookで宛先も件名も最初の`h`のみ全角文字で入力した様子

ちなみにどの文字が、というのはシステムフォントやアプリケーションのバージョン(Outlook)等によって状況が異なるようなので、一概にどの文字とは言えなさそうです。

調査

555 Unsupported option SMTPUTF8等で検索すると上述のような記事がヒット。

最初は「原因」で既述したようにメールアドレスが半角っぽかったので宛名の方(ほげほげ <hoge.hoge@example.com>;<>の外側部分)に原因があるのではないかと想定して、あれこれ試しましたが変化なし。

果てに宛名なしでメールアドレスだけで送信しようとして現象が変化しなかったため、ようやく宛名ではなくメールアドレスの方だと気付きました。

試しにアドレスを見ながら手打ち(コピペ厳禁)したところ正常に送信できました。

そこで、当初のエラーになっているメールの宛先からメールアドレスをコピーしてメモ帳に貼り付けたところ……明らかに文字のサイズが違う。

ということで、ここでようやくメールアドレスに全角文字が混じっていることに気付きました。

余談

以上のRFCで「Internationalized Email (国際化電子メール)」が定義され、UTF8エンコーディングを使用してUnicode文字をメールヘッダに含めること、それをSMTPで転送することが許可されたようです。

ここでSMTPUTF8拡張が出てくるわけですね。

Postfix

一例としてPostfixは3.x系でこの仕様に対応し、メールアドレスのドメイン部もUTF-8が使用できるようになったとのことです。

Postfixのバージョン確認はサーバで以下のコマンドを叩くと表示されます。

# postconf | grep mail_version

mail_version = x.x.x
## (略)

参考

Outlookのエラー対処

SMTPUTF8, RFC

PostfixのSMTPUTF8対応について

Postfixのバージョン確認

さらに余談

確かに、今回の件を考え始めるとメールアドレスのバリデーションが面倒なことになりそう……。

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。