一切都可以去看官方的文档http://www.postfix.org/postconf.5.html
# 列出本地用户的列表,默认是空
smtpd_sender_login_maps = mysql:/etc/postfix/mysql_virtual_sender_maps.cf
# 设置发送者策略,拒绝发送者和登录的用户名不匹配。
smtpd_sender_restrictions = reject_sender_login_mismatch# 拒绝没有列出的用户列表,默认为空# 拒绝没列出的发送者,默认是no,这样其他MTA可以rcpt to本地的用户
smtpd_reject_unlisted_sender = no
以上3个通常是一起来设置达成效果。smtpd_reject_unlisted_recipient = yes
# 不使用匿名方式认证
smtpd_sasl_security_options = noanonymous
# 设置接受邮件策略
# 开启sasl用户认证模式
smtpd_sasl_auth_enable = yes
# 设置smtpd使用什么样的sasl方式进行验证,默认是cyrus。
smtpd_sasl_type = dovecot
#
如果采用SASL 进行认证,那么这里不做设置,默认为空smtpd_sasl_local_domain=# 表示是否兼容非标准的SMTP认证,开启后会出现250-AUTH=PLAIN LOGIN
broken_sasl_auth_clients=yes
smtpd_recipient_restrictions:表示通过收件人地址对客户端发来的邮件进行过滤。通常有以下几种限制规则。
permit_mynetworks:当客户端建立连接时,若它来自mynetworks或mynetworks_style定义的网络,则 permit_mynetworks返回OK,整个smtpd_recipient_restrictions过滤规则也就跟着结束,不再检查其他条件; 如果客户端来自外界网络,permit_mynetworks不会返回OK,也不会返回REJECT,而是返回DUNNO,于是postfix接着检查后面的规则。 permit_sasl_authenticated:表示允许转发通过SASL认证返回OK,如果用户已经通过sasl验证登录的用户,同样会返回OK,这个可以做实验(在局域网内,去掉permit_mynetworks,在reject_unauth_destination规则前保留或布保留permit_sasl_authenticated规则,用foxmail发送邮件就知道)。这个会去查找虚拟用户数据库。reject_unauth_destination:如果邮件的收件人不在postfix所管辖的网域(由mydestination定义,包括虚拟网域),reject_unauth_destination返回REJECT;否则返回DUNNO。
Postfix is the final destination: the resolved RCPT TO domain matches $mydestination, $inet_interfaces, $proxy_interfaces, $virtual_alias_domains, or $virtual_mailbox_domains, and contains no sender-specified routing (user@elsewhere@domain).
postfix有几种状态,一种是ok,一种是reject,一种是dunno,比如
permit_mynetworks, 如果通过,则返回ok,过滤规则判断结束,如果不通过,则返回dunno,进行后面的规则判断,这是permit的处理流程,reject处理流程则不 同,如果不命中reject的规则,那就返回dunno,进行后面的规则过滤,如果命中reject规则,直接返回reject。