postfix中限制认证用户使用的sender address 前言:默认情况下,杂postfix中,a用户主要通过了smtp认证,当a发送邮件时候,发送人地址可以随便写 现在我们想设置限制a用户的发送人地址 达到的要求 (1)a用户只能使用a-email地址发送邮件 (2)外面的用户可以发送邮件给我们服务器用户时候 第(2)点看起来有点多余, 但是如果配置错误的话:第(1)点实现了,第(2)点就有问题 本文将使用reject_authenticated_sender_login_mismatch 和 smtpd_sender_login_maps 如果psotfix开启了以上的功能,当一个smtp auth认证用户发送邮件的时候,postfix大概会做以下检测:当smtp auth认证用户,通过smtp认证,开始使用sender address来发送邮件,postfix会去相应的资料库去查询sender address所对应的owner(也就是说哪个smtpauth认证用户才能使用这个sender address来发送邮件),如果这个owner是这个smtp auth认证用户,那么这个邮件发送成功反之,该smtp auth认证用户会在outlook中提示一个错误信息 配置步骤: 1.在smtpd_sender_restriction加入reject_authenticated_sender_login_mismatch 注意是reject_authenticated_sender_login_mismatch 而不是 reject_sender_login_mismatch 假如加入的是 reject_sender_login_mismatch的话,那么外部的用户(象126等)发送给你服务器上的用户的时候是发送不了的,会提示错误的的 2.在mail.cf中加入 smtpd_sender_login_maps = hash:/etc/postfix/sender_login_maps 3.建立sender_login_maps文件 加入:a-email a用户 这个的意思就是a-email这个地址只能是由a用户来使用 当一个login user 使用sender address来发送邮件的时候,postfix会去sender_login_maps里面查 sender address所对应的用户名,如果这个用户名跟login user相匹配那么 这个login user才可以使用这个sender address 来发送邮件,否则会有错误提示 所有步骤如下: (1)echo "smtpd_sender_restriction = reject_authenticated_sender_login_mismatch" >> /etc/postfix/main.cf (2)echo "smtpd_sender_login_maps = hash:/etc/postfix/sender_login_maps" >> /etc/postfix/main.cf (3)echo "a-email a用户" >> /etc/postfix/sender_login_maps (4)postmap sender_login_maps (5)/etc/init.d/postfix reload http://www.postfix.org/uce.html#smtpd_sender_login_maps