![postfix - 禁止用户登录后更改电子邮件用户名](https://linux22.com/image/752100/postfix%20-%20%E7%A6%81%E6%AD%A2%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E5%90%8E%E6%9B%B4%E6%94%B9%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E7%94%A8%E6%88%B7%E5%90%8D.png)
我有一个带有 Postfix 和 Dovecot 的邮件服务器,用户可以发送电子邮件,但是(登录后)他们可以更改地址并从其他地方发送[email protected]
。
例如,[email protected]
通过 IMAP/SMTP 登录电子邮件,然后他将地址更改为,[email protected]
并且仍然可以冒充其他用户发送邮件。
我该如何禁用此功能?我试过了
smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
但user1
甚至无法从 发送邮件[email protected]
。
答案1
为了MAIL FROM
根据用户限制命令中允许的地址,Postfix 需要知道哪些地址属于哪些用户。因此,您必须将这些限制与smtpd_sender_login_maps
。
smtpd_sender_restrictions
reject_authenticated_sender_login_mismatch
仅对经过身份验证的客户端强制执行
reject_sender_login_mismatch
限制。此功能在 Postfix 版本 2.1 及更高版本中可用。拒绝请求
$smtpd_sender_login_maps
指定地址的所有者MAIL FROM
,但客户端未(SASL)以该MAIL FROM
地址所有者身份登录;或者客户端已(SASL)登录,但根据$smtpd_sender_login_maps
。
如果您使用virtual_alias_maps
将地址映射到本地用户,格式与 相同smtpd_sender_login_maps
,您只需使用相同的文件即可。在此示例中,我假设hash:
Berkeley DB 位于/etc/postfix/virtual
(需要postmap /etc/postfix/virtual
进行修改):
[email protected] user1
[email protected] user1
[email protected] user2
[email protected] user2
[email protected] root
这样,就可以将同一个文件用于两个目的,并且对传入地图的修改也会立即影响允许的出站地址。
在
main.cf
:virtual_alias_domains = example.com virtual_alias_maps = hash:/etc/postfix/virtual
对于经过身份验证的提交(在端口上
587
)master.cf
(假设 TLS 和 Dovecot SASL):submission inet n - - - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_sasl_security_options=noanonymous -o smtpd_sasl_local_domain=$myhostname -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_login_maps=hash:/etc/postfix/virtual -o smtpd_sender_restrictions=reject_sender_login_mismatch
当然也可以使用
smtpd_sender_login_maps = hash:/etc/postfix/virtual smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
直接在
main.cf
,但我建议使用单独的配置提交:它使您能够对经过身份验证的用户使用与传入邮件不同的限制和其他设置,并且它也能更好地工作,例如,限制使用 SMTP 端口的家庭互联网连接25
。