为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

Postfix Relay

公司邮件服务器突然出问题,症状表现为反映迟钝,服务器上查看表现为正在往外狂发垃圾邮件……汗,我以为中毒了,但看起来不像是内部的问题,经过我英明而又缜密的思考,MD,原来是防火墙的问题,当然,也不全然是防火墙的问题,配置也有一定的关系。

问题起因:邮件服务器在局域网,通过IP映射至公网,拥有一个局域网IP192.168.1.3,一个公网IP60.12.34.56,在未更换防火墙之前,已经将邮件服务器主机划分到防火墙外,从容而又奔放地直面那惨淡的互联网。机房在更换防火墙之后,未将邮件主机划到防火墙外,而是使用了默认的IP转发的方式,相信用过双线路由的同志都知道我说的是什么意思,所以,邮件服务器接收到的客户端IP地址均为192.168.1.1,问题就出来鸟……

在Postfix的配置文件中,有一条默认配置文件,

smtpd_recipient_restrictions = permit_mynetworks

这条配置文件本意可以理解为便于做邮件服务器集群,为relay电邮负载均衡之佳选,但是,这个192.168.1.1相当不幸的处于默认的同网段,网关嘛……所以,Postfix就不加以验证地转发了…… 我日…….

于是直接把这条配置屏蔽了先,但这不是根本的解决办法,根本的解决办法只能是再次把邮件服务器转移到防火墙范围外,禁止这条配置文件也是不可行的,因为正常的客户端连接和垃圾邮件机器人是没办法区分出来的。