Postfix 3系の SMTPUTF8 を試してみた

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

こんにちは。サイオステクノロジー OSS サポート担当 N です。

RHEL の 標準 MTA として同梱されている Postfix ですが、2019/05/07 に RHEL8 がリリースされるあたって、Postfix のバージョンも 2.10 系から 3.3 系へとリベースされることとなりました。

変更点や追加機能の概要は、リリースノートや、Postfix コミュニティで公開されているアナウンスページなど (以下参照) を拝見していただくとして、

 ・Postfix feature overview
 https://www.postfix.org/features.html
 ・Postfix Announcements
 https://www.postfix.org/announcements.html

Postfix 3系に移行するにあたり、特筆すべき変更点の一つとして、国際化電子メールヘッダに対応するために導入された SMTPUTF8 拡張があります。

SMTPUTF8 拡張とは?

従来の E メール標準では、メールヘッダに使用できるのは ASCII 文字のみに制限されていました。
2012年に以下の RFC で定義された国際化電子メール “Internationalized Email” では、 UTF-8 エンコーディングを使用してメールヘッダに Unicode 文字を含めること、及びそれを SMTP プロトコルを介して転送することが許可されています。

 (rfc6531) SMTP Extension for Internationalized Email
 https://tools.ietf.org/html/rfc6531
 (rfc6532) Internationalized Email Headers
 https://tools.ietf.org/html/rfc6532
 (rfc6533) Internationalized Delivery Status and Disposition Notifications
 https://tools.ietf.org/html/rfc6533

Postfix の既存のバージョンでは、メールアドレスのローカルパート (@よりも前の部分) で使用される UTF-8 については既に対応していました。3系で実装された今回の SMTPUTF8 拡張では、メールアドレスのドメインパート (@よりも後ろの部分) で UTF-8 が使用できるよう対応されました。
(勿論 SMTP サーバ側・クライアント側の双方で SMTPUTF8 をサポートしている必要がありますがが)

これによって、「ユーザ@サイオステクノロジー.jp」のようにドメイン部に日本語を使用したメールアドレスを使用可能になります。

環境構成

 RHEL8.0
 postfix-3.3.1-8.el8.x86_64
 ホスト名:RHEL8.example.com

動作検証

(参考)
Postfix SMTPUTF8 support
https://www.postfix.org/SMTPUTF8_README.html

 

SMTPUTF8 の有効/無効は smtputf8_enable で制御します。
デフォルト値は yes のため、まずは一旦 no を設定して、従来の動作を確認します。

/etc/postfix/main.cf (最下部に追記)

smtputf8_enable = no

設定を反映

# systemctl reload postfix

同一サーバ上で localhost の 25番ポートに telnet で接続し、UTF8 文字を
FROM に含むメールを送信してみましょう。従来の仕様では、MAIL FROM の
ドメインパートに UTF8 文字が含まれる場合、syntax エラーになります。

# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 RHEL8.example.com ESMTP Postfix
EHLO localhost.example.com
250-RHEL8.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM:ユーザ@サイオステクノロジー.jp
501 5.1.7 Bad sender address syntax
MAIL FROM:ユーザ@サイオステクノロジー.jp SMTPUTF8
501 5.1.7 Bad sender address syntax

この時、maillog では「Illegal address syntax from~」の warning が出力されました。

warning: Illegal address syntax from localhost[::1] in MAIL command: ?????????@??????????????????????????????.jp

 

では、smtputf8_enable = no をコメントアウトし、SMTPUTF8 を有効化 (デフォルト) しましょう。

/etc/postfix/main.cf

# smtputf8_enable = no

設定を反映

# systemctl reload postfix

同様に telnet でメールを送信します。

# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 RHEL8.example.com ESMTP Postfix
EHLO localhost.example.com
250-RHEL8.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8                                     .....(※1)
MAIL FROM:ユーザ@サイオステクノロジー.jp SMTPUTF8     .....(※2)
250 2.1.0 Ok
RCPT TO:mailuser@RHEL8.example.com
250 2.1.5 Ok
DATA
354 End data with .
メールテスト
.
250 2.0.0 Ok: queued as 3F7A51129E19

(※1)Postfix SMTP サーバでは、SMTP クライアントからの EHLO に対して、
  SMTPUTF8 をサポートしていることをアナウンスします。

(※2)SMTP クライアントから SMTPUTF8 リクエストを送信します。
  SMTPUTF8 が使用できるのは MAIL FROM もしくは VRFY コマンドのみです。
  →それ以外のコマンドで UTF8 を使用しようとすると、Unsupported option エラーになります。

  RCPT TO:ユーザ@サイオステクノロジー.jp SMTPUTF8
  555 5.5.4 Unsupported option: SMTPUTF8

この時、maillog には以下のように記録されます。無事、ローカルの mailuser ユーザへメール送信に成功しました。

Jun 6 15:51:12 RHEL8 postfix/smtpd[32131]: connect from localhost[::1]
Jun 6 15:51:44 RHEL8 postfix/smtpd[32131]: 3F7A51129E19: client=localhost[::1]
Jun 6 15:52:00 RHEL8 postfix/cleanup[32159]: 3F7A51129E19: message-id=<20190606065144.3F7A51129E19@RHEL8.example.com>
Jun 6 15:52:00 RHEL8 postfix/qmgr[32024]: 3F7A51129E19: from=<ユーザ@サイオステクノロジー.jp>, size=377, nrcpt=1 (queue active)
Jun 6 15:52:00 RHEL8 postfix/local[32209]: 3F7A51129E19: to=<mailuser@RHEL8.example.com>, relay=local, delay=24, delays=24/0.02/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Jun 6 15:52:00 RHEL8 postfix/qmgr[32024]: 3F7A51129E19: removed

最後に

現時点では例えば myhostname や mydomain では UTF8 に対応していないなど、まだまだ制限の多い機能ですが、今後はこれも修正される可能性が示唆されています。(https://www.postfix.org/SMTPUTF8_README.html#enabling)
今後のアップデートに期待ですね。

アバター画像
About サイオステクノロジーの中の人 4 Articles
サイオステクノロジーで働く中の人です。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる