Help us understand the problem. What is going on with this article?

Postfix で MTA 間送信に TLS を利用する

More than 3 years have passed since last update.

背景

ある日 Gmail で受信したメールに赤い錠が開いた形のマークがある、と報告を受けました。確認してみると Gmail が SMTP で受信する際に TLS が使われていない場合、赤い錠マークが表示されると、Gmail ヘルプにはあります。

寡聞にしてそのときまで知らなかったのですが、MTA 間通信でも TLS を利用できます。社内メールサーバーに利用している Postfix では、ThunderbirdSylpheed 等の MUA からの接続には TLS を使うよう設定していましたが、外部の MTA への SMTP 接続はデフォルトのままでした。

この記事では、Postfix が外部への SMTP 通信時に TLS が利用できる場合に TLS 通信させる設定について説明します。

設定方法

大掛かりな前書きを用意しましたが、設定はシンプルで main.cf に以下を追加して Postfix を reload すれば完了です。

smtp_tls_CAfile = /etc/pki/tls/cert.pem
smtp_tls_security_level = may
smtp_tls_loglevel = 1

設定の意味

smtp_tls_security_level

一番重要な設定です。値には "may" を設定しましょう。may の場合、送信先の SMTP サーバーが STARTTLS 対応している場合に STARTTLS を使い、未対応の場合は通常の SMTP で送信します。

Gmail では赤い錠アイコンが目立ちますが、残念ながら TLS に対応していないサーバーはまだまだ残っています。この記事を記述している 2016/9/30 の時点でも、Google のレポートによると、キャリアメールは全滅です。yahoo.co.jp も非対応ですね。

smtp_tls_CAfile

接続先の証明書を検証するためのルート証明書です。古いサーバーだと、ルート証明書の期限が切れていたり、不足していることがあるので、最新のものかどうか確認を忘れずに。

smtp_tls_loglevel

これを設定しないとログファイルに送信時の TLS 情報が出ません。設定しましょう

確認方法

Postfix の稼動しているサーバーで Gmail 宛に送ってみるのが簡単です。

Gmail ヘッダ

Gmail の「メッセージのソースを表示」メニューでヘッダを表示しましょう。

Received: from *.*.ne.jp (*.*.ne.jp [*.*.*.*])
        by mx.google.com with ESMTPS id qf3si568403igb.48.2016.03.10.18.18.51
        for <***@gmail.com>
        (version=TLS1 cipher=AES128-SHA bits=128/128);
        Thu, 10 Mar 2016 18:18:51 -0800 (PST)

TLS で送信されたことが確認できます。

Postfix ログ

"TLS connection" で grep してみましょう。

2016-03-11T11:18:50.879713+09:00        postfix/smtp[21172]:    mail    info     setting up TLS connection to gmail-smtp-in.l.google.com
2016-03-11T11:18:50.970645+09:00        postfix/smtp[21172]:    mail    info     Verified: subject_CN=mx.google.com, issuer=Google Internet Authority G2
2016-03-11T11:18:50.970691+09:00        postfix/smtp[21172]:    mail    info     TLS connection established to gmail-smtp-in.l.google.com: TLSv1 with cipher AES128-SHA (128/128 bits)

TLS で接続されていればこのようなログが出ていると思います。

環境ごとの注意点

Amazon Linux

上記設定のみで OK です。

CentOS

CentOS 5.x 系以前はルート証明書が古いです。更新されていることを確認しましょう。他の環境から最新のルート証明書を持ってくるのも手っ取り早くてよいですね。

今、新しくメール環境を独自ドメインで作成するなら G Suiteで運用するのが簡単ですが、古くからメールを自社で運用している場合は移行も大変で、メールサーバーが社内最古のサーバーになってしまっていることは少なくないように思います。

Debian / Ubuntu

ルート証明書のパスが Red Hat 系列 (CentOS, Amazon Linux) とは異なります。/etc/ssl/certs/ca-certificates.crt がシステムのルート証明書になります。

諸事情でアップデートできていない場合は、他の環境から最新のルート証明書を取ってきましょう。

まだ qmail 使ってるんだけど...

探してみたらパッチがありました。それも20160918 とつい先日の更新です。頑張ってください。応援しています。

tak-onda
メディアマックスジャパン株式会社のチーフエンジニア。 Kotlin + Jooby によるサーバーサイド開発、フロントエンドは React、DDD + CQRS による設計、モックアップと例示を中心とするお客様と協働するヒアリング&仕様作成を指向しています。上記キーワードに興味のある方は https://www.mediamaxjapan.com までご連絡を!
https://www.mmj.ne.jp
mmj
ウェブシステム開発やサービスを運営している京都の会社です。Kotlin, TypeScript, Reactを中心とした開発体制への移行をしています。 その前はRuby on Rails を中心に開発をしていました。
https://www.mmj.ne.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした