Aug
21
三、配置ESMTP
接下来配置的,主要是针对postfix,以让其可以收发外部的邮件,并对特定的用户和域提供SMTP功能。
1、修改main.cf
引用
myhostname = dc5test.linuxfly.org
当前主机名称,建议配置为FQDN形式
引用
mydomain = linuxfly.org
默认域名称,不设置的话,会自动读取myhostname的后缀形式
引用
myorigin = $mydomain
本机发送出去的邮件会以这个做标识,也就是邮件标头上面的 mail from 的那个地址
引用
inet_interfaces = $myhostname, localhost
这个是监听的网卡,默认只有localhost,可以设置为all或者上面的形式,以决定为那些网卡做监听
引用
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
这个是决定那些邮件是发到本地服务器,并收取下来,不再转发的。
默认没有设置mydomain,请特别留意,这个设置不好的结果,就是本地收不到邮件
引用
mynetworks = 192.168.218.0/24, 127.0.0.0/8
#设置那些客户端是可以通过本地认证的,通过了该认证,配合下面的设置,就可使用SMTP服务
引用
relay_domains = $mydestination
定义可以提供Relay服务的主机范围,上面的意思是只有发送到目标地址的才提供转发服务;但这在对外提供服务的时候是不足够的,例如该主机作为mail.linuxfly.org的MX标记主机,那么就不是对linuxfly.org提供转发才可以,也就是$mydomain;
引用
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
alias_database = hash:/etc/aliases
使用hash格式定义别名文件和别名数据库
引用
smtpd_sasl_auth_enable = yes
启动sasl认证
引用
smtpd_sasl_security_options = noanonymous
取消匿名登陆,默认使用PLAINTEXT模式
引用
broken_sasl_auth_clients = yes
封阻对一些使用不规范SASL认证的客户端
引用
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
设置对那些网络和客户端提供Relay功能,上面的就是除本地网络和通过SASL认证外的都不提供。
2、配置Cyrus SASL
◎先判断一下支持那些认证方式:
引用
# saslauthd -v
saslauthd 2.1.19
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
saslauthd 2.1.19
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
◎设置从哪里获取认证信息:/etc/sysconfig/saslauthd
引用
MECH=shadow
使用shadow或pam都可以。
◎设置认证机制:/usr/lib/sasl2/smtpd.conf
引用
pwcheck_method: saslauthd
mech_list:PLAIN LOGIN
mech_list:PLAIN LOGIN
3、启动服务
service saslauthd start
service postfix start
service postfix start
验证一下:
引用
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 dc5test.linuxfly.org ESMTP Postfix
ehlo localhost
250-dc5test.linuxfly.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 dc5test.linuxfly.org ESMTP Postfix
ehlo localhost
250-dc5test.linuxfly.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.
※蓝色字是输入的命令
4、其他
使用PLAIN TEXT(明文)可能是不安全的,Cyrus sasl还可以支持下面几种认证模式:
引用
250-AUTH DIGEST-MD5 CRAM-MD5 NTLM LOGIN GSSAPI PLAIN
250-AUTH=DIGEST-MD5 CRAM-MD5 NTLM LOGIN GSSAPI PLAIN
250-AUTH=DIGEST-MD5 CRAM-MD5 NTLM LOGIN GSSAPI PLAIN
可参考这里获得配置方式:
引用
/usr/share/doc/postfix-2.1.5/README-Postfix-SASL-RedHat.txt
/usr/share/doc/postfix-2.1.5/README_FILES/SASL_README
/usr/share/doc/postfix-2.1.5/README_FILES/SASL_README
当然,上述配置已经提供了安全配置,但供局域网内使用还可以,若开放到互联网上,则还需要考虑增加MDA,以实现垃圾过滤、病毒过滤等功能。否则,该服务器不但不能给你带来帮助,还会给你带来很多意料之外的麻烦。
※注意:
smtpd_recipient_restrictions是按顺序执行的。而同时配置permit_mynetworks和permit_sasl_authenticated的结果就是,如果客户端和服务器在同一网段,则是不需要通过SMTP认证的。或者换过来说,任一认证通过即可。
但其他网段的客户端就只能通过SMTP认证了。

smtpd_recipient_restrictions是按顺序执行的。而同时配置permit_mynetworks和permit_sasl_authenticated的结果就是,如果客户端和服务器在同一网段,则是不需要通过SMTP认证的。或者换过来说,任一认证通过即可。
但其他网段的客户端就只能通过SMTP认证了。
原来是在dovecot里面的一个收件路径没设置,所以一直无法收到信件!~
通常这样的问题,是对方找不到本地的SMTP服务,或者给本地的一些防垃圾邮件规则给过滤掉了。
看看日志信息,会比较清楚的。