こんにちは。サイオステクノロジー技術部 武井です。
PostfixのTLSを試してみました。PostfixからTLS対応メールサーバーに送る方です。相手はOffice365です。実際にパケットの中身を見て、どうなっているのかも確認しました。
まず、Postfixのインストールです。
# yum install postfix
設定ファイルを修正します。今回はlocalhostからのみメールを送るので、そのように設定します。/etc/postfix/main.cfを修正します。差を見たいので、まずTLSじゃない状態でメールを送ってみます。
myhostname = mail.example.com ... mydomain = example.com ... inet_interfaces = 127.0.0.1 ... mynetworks_style = host ... mynetworks = 127.0.0.0/8
メールを送ってみます。
# telnet localhost 25 Connected to localhost. Escape character is '^]'. 220 postfix-test.japaneast.cloudapp.azure.com ESMTP Postfix HELO foo.or.jp mail.example.com 250 postfix-test.japaneast.cloudapp.azure.com MAIL FROM: ntakei@example.com 250 2.1.0 Ok RCPT TO: ntakei@contoso.onmicrosoft.com 250 2.1.5 Ok DATA 354 End data with . From: ntakei@example.com Subject: test Hello world. . 250 2.0.0 Ok: queued as 76EAD3C4 QUIT 221 2.0.0 Bye Connection closed by foreign host.
EHLOの結果です。tcpdumpでパケットキャプチャしたものをwiresharkで見ています。Office365がSTRTTLSに対応しているのがわかります。
しかし、PostfixがTLSに対応してないので、普通に平文で送っています。
PostfixをTLS対応してみます。/etc/postfix/main.cfに以下を追加します。
smtp_tls_CAfile = /etc/pki/tls/cert.pem smtp_tls_security_level = may smtp_tls_loglevel = 1
Postfixを再起動します。
# systemctl restart postfix
先程と同様にメールを送信して、そのパケットをキャプチャしてみます。
Client HelloとかServer Helloとか出てきています。SSL処理が始まって暗号化されているのがわかりました。