postfix: relay 限制
kevin.Zhu 发布于:2013-9-30 17:16 分类:Postfix 有 17 人浏览,获得评论 0 条
mynetworks = 127.0.0.1, 192.168.0.0/24, 119.24.15.10
mynetworks: 信任client,即运行 mynetworks 后面定义的客户端发信,postfix 会帮忙 relay。
上面的意思是: 允许 本机,192.168.0.0/24 这个局域网,119.24.15.10 这台机 通过 postfix 发送邮件。
relay_domains = $mydomain, $myhostname, 163.com, gmail.com
relay_domains:允许 转发的域。即:发往这些域的邮件可以relay,发往其他域的邮件,拒绝relay。
myhostname:设定主机名称,需使用的FQDN
你应该要设定成为完整的主机名。如:myhostname= mail.example.com
除了这个设定值之外,还有一个MYDOMAIN的设定项目,这个项目预设会取$ myhostname第一个“.”之后的名称。举例来说上头设定完毕后,预设的MYDOMAIN就是 example.com .你也可以自行设定他
myorigin:发信时显示的“发信源主机”
这个项目在设定“邮件标机头上面的邮件来自的那个位址”,也就是代表本MTA传出去的信件将以此设定值为准。如果你在本机寄信时忘记加上邮件从字样的话,那么就以此值为准了预设这个项目以$ myhostname为主的,例如:myorigin= $ myhostname
inet_interfaces:监听的网卡
在预设的情况下你的Postfix的只会监听本机介面的LO(127.0.0.1)而已,如果你想要监听整个互联网的话,请开放成为对外的介面,或者是开放给全部的介面常见的设定方法扩展功能为:inet_interfaces = all
在预设的情况下你的Postfix的只会监听本机介面的LO(127.0.0.1)而已,如果你想要监听整个互联网的话,请开放成为对外的介面,或者是开放给全部的介面常见的设定方法扩展功能为:inet_interfaces = all
mydestination:能够收信的主机名称
因为我们的主机有非常多的名字,那么对方填写的邮件到到底要写哪个主机名字我们当前才能将该信件收下吗?电子邮件的主机位址在我们这个练习当中这部主机有多个名字,所以写法为:mydestination= $ myhostname,本地主机,mail.example.com, ftp.example.com, http.exmaple.com
mynetworks_style: 信任网络 类型
host是192.168.0.100,如果我相信整个区域网路内(192.168.0.0/24)的用户的话,那此设定值为“subnet”!不过,一般来说,因为底下的mynetworks会取代这个设定值,所以不设定也没有关系喔!如果要设定的话,最好设定成为host 即可(亦即仅信任这部MTA的主机而已)。
host是192.168.0.100,如果我相信整个区域网路内(192.168.0.0/24)的用户的话,那此设定值为“subnet”!不过,一般来说,因为底下的mynetworks会取代这个设定值,所以不设定也没有关系喔!如果要设定的话,最好设定成为host 即可(亦即仅信任这部MTA的主机而已)。
relay_domains:规范可以帮忙转发的下一部MTA主机位址
相对于mynetworks是针对“信任的用户端”而设定的,这个relay_domains,则可以视为“针对下游的MTA伺服器”而设定的。举例来说,如果你这部主机是www.niki.centos.vbird的MX主机时,那你就得要在relay_domains设定针对整个niki.centos.vbird这个领域的目标信件进行转递才行在预设的情况下,这个设定值是$mydestination而已啦。
你必需要注意的“后缀预设并不会转递的MX主机的信件”,意思就是说:如果你有两部主机,一部是上游的MTAup,一部是下游的MTAdown,而MTAdown规范的MX主机是MTAup,由22.1.2谈到的DNS的MX设定值与信件传递方向,我们知道任何想要寄给MTAdown主机的信件,都会先经过MTAup来转递才行!此时如果那部MTAup没有开启帮MTAdown进行中继的权限时,那么任何传给MTAdown的信件将“全部都被MTAup所退回!”从此MTAdown就无法收到任何信件了。
邮件服务器时,并且也有设定的MX的状况下,嘿嘿!这个relay_domains就很重要啦!上游的MTA主机必需要启动这个设定,一般来说除非你是某部的MTA主机的MX源头,否则这个设定项目可以忽略不设定他,而如果你想要帮你的用户端转递信件到某部特定的MTA的主机时,这个设定项目也是可以设定的啦。预设请您暂缓预设值即可。
相对于mynetworks是针对“信任的用户端”而设定的,这个relay_domains,则可以视为“针对下游的MTA伺服器”而设定的。举例来说,如果你这部主机是www.niki.centos.vbird的MX主机时,那你就得要在relay_domains设定针对整个niki.centos.vbird这个领域的目标信件进行转递才行在预设的情况下,这个设定值是$mydestination而已啦。
你必需要注意的“后缀预设并不会转递的MX主机的信件”,意思就是说:如果你有两部主机,一部是上游的MTAup,一部是下游的MTAdown,而MTAdown规范的MX主机是MTAup,由22.1.2谈到的DNS的MX设定值与信件传递方向,我们知道任何想要寄给MTAdown主机的信件,都会先经过MTAup来转递才行!此时如果那部MTAup没有开启帮MTAdown进行中继的权限时,那么任何传给MTAdown的信件将“全部都被MTAup所退回!”从此MTAdown就无法收到任何信件了。
邮件服务器时,并且也有设定的MX的状况下,嘿嘿!这个relay_domains就很重要啦!上游的MTA主机必需要启动这个设定,一般来说除非你是某部的MTA主机的MX源头,否则这个设定项目可以忽略不设定他,而如果你想要帮你的用户端转递信件到某部特定的MTA的主机时,这个设定项目也是可以设定的啦。预设请您暂缓预设值即可。
SMTP AUTH:smtp 密码验证 (postfix 已经能用)
使用 saslauthd.
1. 安装saslauthd 相关软件包。
cyrus-sasl-lib-2.1.22-5.el5_4.3
cyrus-sasl-plain-2.1.22-5.el5_4.3
cyrus-sasl-lib-2.1.22-5.el5_4.3
cyrus-sasl-plain-2.1.22-5.el5_4.3
cyrus-sasl-2.1.22-5.el5_4.3
2.设定
# saslauthd -v
saslauthd 2.1.23
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
# 上面分号后面的内容代表:支持的密码验证机制
# vim /etc/sysconfig/saslauthd
MECH=pam <==其实这个是默认值
# 3. 启动
# /etc/init.d/saslauthd start
# chkconfig saslauthd on #开机自启动
# vim /etc/sasl2/smtpd.conf
log_level: 3 <==登录记录等级,设置 3 即可
pwcheck_method: saslauthd <==就是smtpd 用什么服务来验证密码
mech_list: plain login <==支持那些验证机制。 也可以不填写这一行,默认支持 saslauthd -v 看到的所有机制。
# vim /etc/postfix/main.cf
# 在最后添加如下内容:
smtpd_sasl_auth_enable = yes //启用smtp验证功能
smtpd_sasl_security_options = noanonymous //不允许匿名登录
broken_sasl_auth_clients = yes //支持非标准客户端,如老版本的outlook。。。
smtpd_recipient_restrictions =
permit_mynetworks, //允许mynetworks
permit_sasl_authenticated, <==重点!注意順序!
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client cblless.anti-spam.org.cn,
reject_rbl_client sbl-xbl.spamhaus.org,
check_policy_service unix:/var/spool/postfix/postgrey/socket
permit_sasl_authenticated: 放在第二行,表示:第一行的mynetworks 不需要验证就可以relay。其他的都要验证才可以relay。
最后重启postfix。使用客户端进行测试。
#/etc/init.d/postfix restart