postfix 3.0.1インストール

Postfixを2.0系から3.0系へアップグレード。

インストール

portmasterでアップグレードインストール。現在、2.0系がpostfix、3.0系は現在postfix-currentでportsに収録されている。

#sudo portmaster -o mail/postfix-current postfix

サービスを再起動。

#sudo service postfix restart

次のように警告が出る。

postfix: Postfix is running with backwards-compatible default settings
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details
postfix: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"
postfix/postfix-script: stopping the Postfix mail system
postfix/postfix-script: waiting for the Postfix mail system to terminate
postfix: Postfix is running with backwards-compatible default settings
postfix: See http://www.postfix.org/COMPATIBILITY_README.html for details
postfix: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"
postfix/postfix-script: starting the Postfix mail system

 

3.0での主な変更点

Postfix Backwards-Compatibility Safety Net」より。

append_dot_mydomain=yes

append_dot_mydomainのデフォルト値が “yes” から “no” に変更された。

append_dot_mydomainが未設定でデフォルト値で動作しており、かつ後方互換機能がONに設定されている場合、次のいずれかがPostfixのログに記録される場合あり。

    • mydestinationまたは他クラスの “localhost” が存在しないことに関するメッセージ。
      postfix/trivial-rewrite[14777]: using backwards-compatible
      default setting append_dot_mydomain=yes to rewrite
      "localhost" to "localhost.example.com"; please add
      "localhost" to mydestination or other address class

      上記メッセージがログにある場合、mydestinationに “localhost” を追加(またはvirtual_alias_domains, virtual_mailbox_domain, またはrelay_domainsに追加)して、「postfix reload」コマンドを実行する。

    • メールアドレスのドメインが不完全であることに関するメッセージ。
      postfix/trivial-rewrite[25835]: using backwards-compatible
          default setting append_dot_mydomain=yes to rewrite "foo" to
          "foo.example.com"

      “localhost” 以外のドメインに対して上記メッセージがログに残され、送信元アドレスに完全なドメイン名指定ができない場合、システム管理者はmain.cfに “append_dot_mydomain=yes” を追加し、後方互換機能を永続的に利用するよう設定する必要がある。

      # postconf append_dot_mydomain=yes
      # postfix reload
      

chroot=y

master.cfのchrootの値が “y” (yes) から “n” (no) に変更された。

master.cfのchrootの値が空欄でデフォルト値を使用する場合、かつ後方互換機能がONになっている場合、Postfixは次のメッセージをログに記録することがある。

postfix/master[27664]: /etc/postfix/master.cf: line 72: using
 backwards-compatible default setting chroot=y

サービスをchrootで動かしたい場合には、master.cfに “chroot=y” を追加して後方互換機能を永続的に利用する設定を行う。たとえば “smtp inet” サービスのchroot設定を更新する場合には、次のようにする。

# postconf -F smtp/inet/chroot=y
# postfix reload

mynetworks_style=subnet

mynetwork_styleのデフォルト値が “subnet” から “host” に変更された。

このパラメータは “permit_mynetworks” 機能の実装に使用される。mynetworksとmynetworks_styleの値が空欄でデフォルト値が使用され、かつ後方互換機能がONになっている場合、Postfixは次のいずれかのメッセージをログに残すことがある。

postfix/smtpd[17375]: using backwards-compatible default setting
 mynetworks_style=subnet to permit request from client
 "foo.example.com[10.1.1.1]"

postfix/postscreen[24982]: using backwards-compatible default
 setting mynetworks_style=subnet to permit request from client
 "10.1.1.1"

拒否されるべきでないクライアントが拒否されている場合には、システム管理者はmain.cfに “mynetoworks_style=subnet” を追加する。

# postconf mynetworks_style=subnet
# postfix reload

relay_domains=$mydestination

relay_domainsのデフォルト値が “$mydestination” からカラ(何も指定しない)に変更された。relay_domainsの値が空欄でデフォルト値が使用され、かつ後方互換機能がONになっている場合、Postfixは次のいずれかのメッセージをログに残すことがある。

  • リモートドメインからのメール受信に関するメッセージ

    postfix/smtpd[19052]: using backwards-compatible default setting
        relay_domains=$mydestination to accept mail for domain
        "foo.example.com"
    postfix/smtpd[19052]: using backwards-compatible default setting
        relay_domains=$mydestination to accept mail for address
  • リモートドメインへのETRNサービス提供に関するメッセージ

    postfix/smtpd[19138]: using backwards-compatible default setting
        relay_domains=$mydestination to flush mail for domain
        "bar.example.com"
    postfix/smtp[13945]: using backwards-compatible default setting
        relay_domains=$mydestination to update fast-flush logfile for
        domain "bar.example.com"

Postfixがそのドメインからのメールを受信すべき、あるいはそのドメインにETRNサービスを提供すべき場合には、システム管理者は “relay_domains=$mydestination” をmain.cfに設定する。

# postconf 'relay_domains=$mydestination'
# postfix reload

注:上記のとおりの引用符が必要。

$mydestinationの代わりに個別にドメイン名を指定する方が望ましい。

smtputf8_enable=no

smtputf8_enableのデフォルト値が “no” から “yes” に変更された。

“yes” となった設定では、SMTPUTF8を要求しない非ASCIIのアドレスを拒否する。以前の “no” の設定では、伝統的なSMTPの標準で許可されていない場合であっても、そのようなアドレスを受け入れる。

smtputf8_enableの値が空欄でデフォルト値が使用され、かつ後方互換機能がONになっている場合、ローカルパートが非ASCIIなアドレスからSMTPUTF8を要求せずにSMTPのコマンドラインを利用するたびに次の警告をログに残す。

postfix/smtpd[27560]: using backwards-compatible default setting
 smtputf8_enable=no to accept non-ASCII sender address
 "??@example.org" from localhost[127.0.0.1]

postfix/smtpd[27560]: using backwards-compatible default setting
 smtputf8_enable=no to accept non-ASCII recipient address
 "??@example.com" from localhost[127.0.0.1]

このアドレスを拒否したくない場合で、かつクライアント側でSMTPUTF8を利用するようアップデートすることが不可能な場合、システム管理者はmain.cfに “smtputf8_enable=no” を追加する。

# postconf smtputf8_enable=no
# postfix reload

 

自サイトでの設定変更

特にコンフィグ変更の必要な変更はなかった。

  • mydestinationに “localhost” は追加済み。
  • 不完全なドメイン名のアドレスからメール送信することはない。
  • chrootが必要なサービスも特になし。
  • mynetwork_style=host に設定済み。
  • メールの中継は行わないため、relay_domainの設定不要。
  • 非ASCIIなドメインの人とはお付き合いなし。

ただし、smtputf8_enableが “yes” の場合にはEAIが必須となるため、EAI (Email Address Internationalization) にチェックをつけてコンフィグし、再インストールした。

# sudo portmaster --force-config mail/postfix-current

インストール後、次のように後方互換モードでの運用を解除。

# sudo postconf compatibility_level=2
# sudo postfix reload

今のところ特に問題なし。