チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

Postfix+Dovecot+SSL/TLS(Let's Let's Encrypt証明書利用) メールサーバー間の暗号化手順

通常のPostfixなどではパスワードやら本文やら平文で送信されてしまうのでよろしくない。
てことで下記をやればOK。


環境
AWS上のEC2(CentOS7)
・送信にPostfix、受信にDovecot利用

1.メールサーバとメールクライアント間(つまりログイン時)の暗号化

https://centossrv.com/postfix-tls.shtml

2.メールクライアントから送信先メールサーバへの暗号化

https://www.pochaneko.com/mailserver-to-ssl/

3.確認

これで完成したはず。
確認方法としては、適当にメールしてみて、メールヘッダを確認。
その本文が文字化けしてれば暗号化されてるということなのでOK。のはず。

P.S
GmailでPOP受信しようとしたら自己署名だとエラーになってしまうらしい。
サンダーバードなどの一部メールクライアントでは自己署名で不正としても例外として承認することが出来るので、SSL購入せずにやる場合はGmailで受信出来ないと思ったほうがよさそう。


もしかしたらこの辺も役に立つかも
https://www.toritonssl.com/support/manual/10-3.html


その他わかったこと
・SMTPSをつかうとはいえ、通常のSMTP25のポートは空いていないとダメらしい
・個別のパスは送信時に必要。
ただし2つじゃなくてhoge.comとmail.hoge.comがあった場合、hoge.comがあればよい。


P.S 自己署名でもいいが、Let's Encryptという無料で取得できる証明書もあるのでそちらを使えたほうが尚良さそう。
SSLメールサーバ構築メモ Let's Encrypt+Postfix+Dovecot | あぱーブログ

ということで最終的にはこちらにした。
一応うまく言ったときのpostconf結果を貼っておく。

# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
local_recipient_maps =
luser_relay = unknown_user@localhost
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 10485760
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
myhostname = mail.hogehoge.jp
mynetworks = 192.168.11.0/24, 127.0.0.0/8
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_tls_CAfile = /etc/pki/tls/cert.pem
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtpd_banner = $myhostname ESMTP
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_tls_ask_ccert = yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.hogehoge.jp-0001/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.hogehoge.jp-0001/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 550

自分の場合は結果としてメーラーからの送受信はちゃんと出来てるのになぜかアプリケーションから送信しようとすると
SSL accetp error なんちゃら
っていうエラーが必ず出て、何でかなーと思ってたら
アプリケーション側でポート番号は変更しているのにSSL = null みたいになってたのを気づいて修正したら正常に動作した。


書くとこれだけなんだけど8時間くらいハマった