为Postfix添加TLS支持

近来邮件服务器上暴破的机器人越来越多,居然还破了几个用户的密码,用来发送垃圾邮件,好贱!琢磨着怎么改进一下这种情况,但是除了限制访问频率,似乎没有别的好方法,顺便把smtp和pop3都改为了ssl支持,也就是smtps和pop3s。

由于原有的邮件系统架设于courier-imap+postfix,所以启用pop3s是很简单的事情,两步操作即可:

1,生成crt:/usr/local/share/courier-imap/mkpop3dcert,执行完成后,会在当前目录生成一个被叫做pop3d.pem的文件。

2,启动courier-imap-pop3d-ssl即可,当然了,同时关闭掉courier-imap-pop3d。

接下来我们启用postfix的smtps,首先当然是生成crt,由于postfix要求有CA crt,所以呢,不能生成一个self-verification的crt,必须先整一个CA,这个流程和之前生成Openvpn证书的类似,这里就不多说了。

证书生成之后呢,我们添加一点点配置到postfix的main.cf里面:

#################TLS Support################
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = no
smtp_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem
smtp_tls_cert_file = /usr/local/etc/postfix/certs/servercert.pem
smtp_tls_key_file = /usr/local/etc/postfix/certs/serverkey.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/certs/servercert.pem
smtpd_tls_key_file = /usr/local/etc/postfix/certs/serverkey.pem
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 3
smtpd_starttls_timeout = 60s

然后还需要修改一下master.cf,在smtp监听那一行下面,添加smtps的监听:

smtps inet n – n – – smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

最后,重启一下postfix,设置客户端就可以了,465和995哦亲!不要设置错了哦亲!

Postfix Packages for Solaris 10

由于sendmail一直有个myhostname 的问题,必须要修改系统参数,才能让sendmail发送合法的邮件,然而,因为业务需要,有些服务器的主机名一旦设置完成,就不太方便修改,真是有点低级趣味,postfix可以在main.cf中设置hostname,这样就方便得多,于是安装一只postfix就很有必要了,在Linux上的安装很简单,在Solaris上却是麻烦不断,于是干脆找了一个二进制包:http://ihsan.dogan.ch/postfix/

首先当然要卸载系统自带的sendmail:

# svcadm disable sendmail
# pkgrm SUNWsndmu
# pkgrm SUNWsndmr

然后在线安装,作者提供了四种版本的postfix,我这里只需要Sparc平台的版本:

# pkgadd -d http://ihsan.dogan.ch/postfix/downloads/CNDpostfix-2.8.4,REV=110727-SunOS5.10-sparc.pkg CNDpostfix

当然,也可以下载来安装,装完之后呢把postfix添加到系统服务:

# svcadm enable svc:/network/postfix:default

然后呢修改一下/etc/postfix/main.cf,添加一行就可以了,把需要添加的发送主机名填进去:

myhostname = mail.qq.com

当然了还要重启一下postfix:svcadm restart postfix