Postfix+Dovecot+SSL/TLS(Let's Let's Encrypt証明書利用) メールサーバー間の暗号化手順
通常のPostfixなどではパスワードやら本文やら平文で送信されてしまうのでよろしくない。
てことで下記をやればOK。
環境
・AWS上のEC2(CentOS7)
・送信にPostfix、受信にDovecot利用
1.メールサーバとメールクライアント間(つまりログイン時)の暗号化
2.メールクライアントから送信先メールサーバへの暗号化
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時間くらいハマった