zoukankan      html  css  js  c++  java
  • rhel5下为sendmail添加SSL/TLS加密功能

    rhel5下为sendmail添加SSL/TLS加密功能

     

    按照这篇文档配置sendmail http://hi.baidu.com/kolex/blog/item/25004935d36f26325ab5f54e.html

    一、配置 dovecot

    用简单的/etc/shadow 文件的认证

    [root@nana /]#  dovecot -n
    # /etc/dovecot.conf
    protocols: pop3s
    login_dir: /var/run/dovecot/login
    login_executable: /usr/libexec/dovecot/pop3-login
    login_greeting: FreeLAMP.com Day Day Up
    mail_location: mbox:~/mail:INBOX=/var/mail/%u
    mail_executable: /usr/libexec/dovecot/pop3
    mail_plugin_dir: /usr/lib/dovecot/pop3
    auth default:
    mechanisms: plain login
    cache_size: 1024
    passdb:
    driver: shadow
    userdb:
    driver: passwd

    这里只用了 pop3s 协议,也就是 995 端口。

    配置 dovecot 证书
    [root@nana /]# vi /etc/pki/dovecot/dovecot-openssl.cnf

    [root@nana /]# mv /etc/pki/dovecot/private/dovecot.pem /etc/pki/dovecot/private/dovecot.pem.orig

    [root@nana /]# mv /etc/pki/dovecot/certs/dovecot.pem /etc/pki/dovecot/certs/dovecot.pem.orig

    生成新的自己 domain 的证书
    [root@nana /]# /usr/share/doc/dovecot-1.0/examples/mkcert.sh

    [root@nana /]# mv /etc/pki/dovecot/private/dovecot.pem /etc/pki/dovecot/private/mydomain.pem

    [root@nana /]# mv /etc/pki/dovecot/certs/dovecot.pem /etc/pki/dovecot/certs/mydomain.pem

    主要修改的地方是:

    [root@nana /]#vi /etc/dovecot.conf
    ssl_disable=no
    ssl_cert_file=/etc/pki/dovecot/certs/mydomain.pem
    ssl_key_file=/etc/pki/dovecot/private/mydomain.pem
    ssl_parameters_regenerate=168
    verbose_ssl=no

    这样,POP3S 收取邮件时,就可以在 /etc/log/maillog 里看到这样的日志:
    Oct 8 22:22:40 freelamp dovecot: pop3-login: Login: user=, method=PLAIN, rip=::ffff:61.171.62.106, lip=::ffff:61.152.249.2, TLS

    至此,POP3 的加密完成。下面介绍 SMTP 的加密。

    二、配置sendmail

    1. 生成 CA 证书
    [root@nana /]# cd /etc/pki/tls/misc
    [root@nana /]#./CA -newca
    根据提示输 入,Common Name 输入自己的邮件服务器主机名字,mail.yourdomain.com
    会生成两个文件:
    /etc/pki/CA/cacert.pem (CA证书,你可以和其他通信的机构交换这个证书)
    /etc/pki /CA/private/cakey.pem(
    密码保护的私密证书,用来签名和撤销证书)

    2.生成私密和证书签名请求(CSR)
    [root@nana /]#./CA -newreq
    /etc/pki/tls/misc 目录下生成两个文件:
    /etc/pki/tls/misc/newreq.pem
    /etc/pki/tls/misc/newkey.pem

    3.签名:
    [root@nana /]#./CA -sign
    这一步生成 /etc/pki/CA/newcerts/.pem /etc/pki/tls/misc/newcert.pem 2个一样的文件。

    4.拷贝证书到 sendmail 的证书目录下,并修改文件权限
    [root@nana /]# mkdir /etc/mail/certs
    [root@nana /]# cp /etc/pki/CA/cacert.pem /etc/mail/certs
    [root@nana /]# cp /etc/pki/tls/misc/newcert.pem /etc/mail/certs/mycert.pem
    [root@nana /]# openssl pkcs8 -in newkey.pem -topk8 -nocrypt -out mykey.pem (
    解决 SSL_CTX_use_PrivateKey_file Error 问题)
    [root@nana /]# cp /etc/pki/tls/misc/mykey.pem /etc/mail/certs

    [root@nana /]# chmod -R 700 /etc/mail/certs
    [root@nana /]# chown -R root:sys /etc/mail/certs

    5.配置 sendmail,并重启
    修改 /etc/mail/sendmail.mc
    define(`confCACERT_PATH’, `/etc/mail/certs’)
    define(`confCACERT’, `/etc/mail/certs/cacert.pem’)
    define(`confSERVER_CERT’, `/etc/mail/certs/mycert.pem’)
    define(`confSERVER_KEY’, `/etc/mail/certs/mykey.pem’)

    测试 Sendmail 是否编译支持 STARTTLS:

    [root@nana /]# sendmail -bt -d0.8 < /dev/null

    Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
    MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
    NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF STARTTLS TCPWRAPPERS
    USERDB USE_LDAP_INIT

    [root@nana /]# m4 /etc/mail/sendmail.mc >/etc/mail/sendmail.cf

    [root@nana /]# service sendmail restart

    6.从客户端检查:

    [root@nana /]# telnet mail.freelamp.com 25
    EHLO your_hostname

    应该看到:
    250-STARTTLS

    至此, SMTP 的加密功能完成

  • 相关阅读:
    转载-MongoDB 分片集群技术
    EXT4参数优化及测试---转载
    9.16周记
    PHP优化思路
    2018.09.10-拾遗
    周记8
    落地成盒-发快递
    周记7
    GTX log 6
    Gitlab Jenkins WebHook 持续集成配置踩坑记
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7170991.html
Copyright © 2011-2022 走看看