sendmail+tls

  vim /etc/mail/sendmail.mc
找到如下行,去掉注释,修改路径及名称
define(`confCACERT_PATH', `/etc/mail/certs')dnl
define(`confCACERT', `/etc/mail/certs/cacert.pem')dnl
define(`confSERVER_CERT', `/etc/mail/certs/mysmtp.pem')dnl
define(`confSERVER_KEY', `/etc/mail/certs/mysmtp.pem')dnl
完成后,重新生成sendmail.cf文件
m4 /etc/mail/senmail.mc >/etc/mail/sendmail.cf
生成证书:
cd /etc/mail/certs
生成CA的签名及证书
openssl req -new -x509 -keyout cakey.pem -out cacert.pem -days 3650
生成Sendmail的证书
openssl req -nodes -new -x509 -keyout mysmtp.pem -out mysmtp.pem -days 3650
查看证书
openssl x509 -noout -text -in /etc/mail/certs/mysmtp.pem
看看生成的信息是否正确。
验证
sendmail -d0.1 -bv root  如下,主要看是否有SASLv2和STARTTLS。如果有,证明正常。
Compiled with: DNSMAP LOG MATCHGECOS MILTER MIME7TO8 MIME8TO7
                NAMED_BIND NETINET NETUNIX NEWDB PIPELINING SASLv2 SCANF
                STARTTLS USERDB XDEBUG
启动sendmail
service sendmail start
查看日志是否有错误输出:tail -f /var/log/maillog,如果没有,在客户端outlook的smtp设置中,选中此服务器要求ssl验证,端口改为465。测试发送邮件,如果正常,证明安装成功。
===============================================================

java中使用ssl来调用此mailserver来发送邮件的话,需要导入证书改为私钥。

导入一个Pem的证书文件为java的私钥

1、转换pem格式为der格式
openssl x509 -outform der -in /etc/mail/certs/mysmtp.pem -out /etc/mail/certs/mysmtp.der      //其中/etc/mail/certs为存放pem文件的路径
2、linux下导入
$JRE/bin/keytool -import -alias sendemail -keystore $JRE/lib/security/cacerts -file /etc/mail/certs/mysmtp.der
 windows下导入
keytool -import -alias your-alias -keystore %JAVA_HOME%\jre\lib\security\cacerts -file certificate.der
导入时提示需要密码,默认的keystore密码为:changeit