发表于:2009-11-17 浏览:454 作者: 来源:互联网
关键字:POSTFIX,TLS,SASL
描述:使用Postfix和SASL允许一个电子邮件管理员来强制来自一个不信任位置的用户使用用户名和密码来做身份认证。增加TLS可以在传输过程中加密密码。这是保护邮件服务器不被垃圾邮件发送者利用的一个主要方法,同
使用Postfix和SASL允许一个电子邮件管理员来强制来自一个不信任位置的用户使用用户名和密码来做身份认证。增加TLS可以在传输过程中加密密码。这是保护邮件服务器不被垃圾邮件发送者利用的一个主要方法,同时也能保护用户帐号信息。注意本文只涉及使用SMTP(发信)连接。请参看知识库里的其他文章来了解怎么使用TLS做POP和IMAP(收信)连接。
本文假设Postfix已经被配置成不使用SASL和TLS来收发信件。否则,请查看知识库的其他文章来了解怎么配置Postfix。
设置SASL
为了给Postfix加入SASL支持,必须安装cyrus-sasl包。
up2date cyrus-sasl
等cyrus-sasl安装后,必须为每个邮件用户创建SASL用户。可以用saslpasswd2命令来做。注意所有的SASL用户应该已经做为正常系统用户存在,SASL密码也应该和它们的系统帐号密码一样。
[root@localhost ~]# saslpasswd2 -c frank
Password:
Again (for verification):
SASL用户记录在数据库文件/etc/sasldb2中。这个文件的属组必须改成"postfix":
chown :postfix /etc/sasldb2
创建好用户后,两个配置文件需要更新。文件/usr/lib/sasl2/smtpd.conf应该是这样:
[root@localhost ~]# cat /usr/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
设置TLS
为了使用TLS,必须创建一个SSL证书链。请参看知识库里的其他文章来了解怎么创建需要的SSL证书。本文假设系统有下面证书文件:
/usr/share/ssl/certs/key.pem
/usr/share/ssl/certs/cert.pem
/usr/share/ssl/certs/cacert.pem
为Postfix配置TLS和SASL
文件/etc/postfix/main.cf需要加入下面一些行:
#### SASL bits ####
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options=noanonymous
## The following allows anyone who is in mynetworks, or anyone who can authenticate, to send mail through this server
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination, permit_mynetworks check_relay_domains
smtpd_delay_reject = yes
## this is necessary for some email clients
broken_sasl_auth_clients = yes
#### TLS bits ####
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
## Location of key, cert and CA-cert.
## These files need to be generated using openssl
smtpd_tls_key_file = /usr/share/ssl/certs/key.pem
smtpd_tls_cert_file = /usr/share/ssl/certs/cert.pem
smtpd_tls_CAfile = /usr/share/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_exchange_name = /var/run/prng_exch
tls_random_source = dev:/dev/urandom
tls_smtp_use_tls = yes
ipv6_version = 1.25
在做了这些改动后,Postfix必须被重载或者重启。注意在老版本的Postfix里,需要重启程序。在Postfix2.1和更高版本里则不需要,因为Postfix可以直接存取该文件。
为了测试TLS,在25号端口打开一个telnet会话。
[root@localhost ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]‘.
220 localhost.localdomain ESMTP Postfix
ehlo localhost <-- YOU TYPE THIS
250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS <--THIS INDICATES TLS IS RUNNING
250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN LOGIN NTLM <-- THESE LINES INDICATE AUTH TYPES
250-AUTH=GSSAPI DIGEST-MD5 CRAM-MD5 PLAIN LOGIN NTLM <--
250 8BITMIME
如果想看一个完全可以工作的/etc/postfix/main.cf文件的示例,请查看: http://people.redhat.com/sfolkwil/main.cf.