Postfix 3系の SMTPUTF8 を試してみた

こんにちは。サイオステクノロジー 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)
今後のアップデートに期待ですね。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です