メール送受信用のPOP3/IMAP4/SMTPプロトコルでは、メール本文や認証用パスワードが暗号化されないため、盗聴によって悪用される可能性があります。
そこで、メールサーバと接続する端末との送受信経路を暗号化しパスワードが盗聴されないようにします。SSL/TLS証明書を得るには openssl コマンドで秘密鍵と証明書のセットを作成する必要がありますが、この作業を簡略化する Makefile が openssl パッケージとともにインストールされています。ここではこれを使用してサーバ証明書を作成します。
1.サーバ(自己)証明書の作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
cd /etc/pki/tls/certs/ # サーバー証明書作成 make mail.pem umask 77 ; \ PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ /usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \ cat $PEM1 > mail.pem ; \ echo "" >> mail.pem ; \ cat $PEM2 >> mail.pem ; \ rm -f $PEM1 $PEM2 Generating a 2048 bit RSA private key ..........+++ ..............+++ writing new private key to '/tmp/openssl.BI7ZDX' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- #この後応答していく Country Name (2 letter code) [XX]:JP ←日本応答 State or Province Name (full name) []:tokyo ←東京 Locality Name (eg, city) [Default City]:Shibuya ←渋谷とする Organization Name (eg, company) [Default Company Ltd]:hogehoge.com ←なんでもいいがドメインにしてみる Organizational Unit Name (eg, section) []: ←空白 Common Name (eg, your name or your server's hostname) []:mail.hogehoge.com ←Mailサーバのコモンネーム Email Address []:root@hogehoge.com cd ←元のディレクトリ |
2.Postfixの設定ファイル設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
vi /etc/postfix/main.cf # postfix設定ファイル(main)編集 # 以下を最終行へ追加 smtpd_use_tls = yes smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache vi /etc/postfix/master.cf # postfix設定ファイル(master)編集 # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - n - - smtpd #smtps inet n - n - - smtpd ← 行頭の#を削除(コメント解除) # -o smtpd_tls_wrappermode=yes ← 行頭の#を削除(コメント解除) # -o smtpd_sasl_auth_enable=yes ← 行頭の#を削除(コメント解除) smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes #tlsmgr unix - - n 300 1 tlsmgr ← 行頭の#を削除 ↓ tlsmgr unix - - n 300 1 tlsmgr |
Postfixを再起動する。
systemctl restart postfix
3.Dovecotの設定
1 2 3 4 5 6 7 8 9 |
vi /etc/dovecot/conf.d/10-ssl.conf #ssl = yes ssl = yes ← TLS通信の有効化 # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf ssl_cert = </etc/pki/tls/certs/mail.pem ← サーバー証明書を指定 ssl_key = </etc/pki/tls/certs/mail.pem ← サーバー証明書を指定 |
Dovcotを再起動する。
systemctl restart dovecot
4.セキュアポートの開放
POP3s/IMAP4s/SMTPsで使用する以下のポートを開放します。
1 2 3 4 5 6 7 8 |
# SMTP Over SSLサービス firewall-cmd --add-port=465/tcp --permanent # POP Over SSLサービス firewall-cmd --add-port=995/tcp --permanent # IMAP4 Over SSLサービス firewall-cmd --add-port=993/tcp --permanent # リロード firewall-cmd --reload |
このあと、クライアントから、接続するポートをメール送信:SMTPS、メール受信: IMAP4Sに変更すればメールサーバとクライアント間の暗号化通信が実現できます。