似乎我可以为所有用户或仅本地网络上的用户打开传递状态通知。有没有办法只为我们的员工打开 DSN,无论他们身在何处?即如果员工发送邮件(使用 SASL 身份验证),他们会收到退回/延期/成功通知,但向我们的系统发送邮件的其他人却不会收到?
手册页上写道:
smtpd_discard_ehlo_keyword_address_maps
如果您希望允许来自受信任客户端的 DSN 请求,但不允许随机陌生人的 DSN 请求,请使用此功能
并给出例子:
/etc/postfix/main.cf:
smtpd_discard_ehlo_keyword_address_maps =
cidr:/etc/postfix/esmtp_access
/etc/postfix/esmtp_access:
# Allow DSN requests from local subnet only
192.168.0.0/28 silent-discard
0.0.0.0/0 silent-discard, dsn
::/0 silent-discard, dsn
但我不想基于子网,我想为 A. 使用 SASL 进行身份验证的用户 - 或 - B. 系统上有 @ourdomain.com 邮箱的用户(我们的员工)启用 DSN
有没有办法做到这一点?
Ubuntu 10.04/Postfix 2.7.0
答案1
不幸的是,我认为(目前)还不可能实现。
答案2
Postfix 尚不支持在 AUTH 命令后通告 DSN 扩展。不过有一个解决方法;在我的设置中,Postfix 监听端口 25(标准 SMTP)和 587(提交 SMTP)。SMTP 服务器 (MTA) 使用端口 25,可以通过在其守护进程中master.cf
添加以下内容来禁用该端口的 DSN smtpd_discard_ehlo_keywords
:
smtp inet n - n - - smtpd
-o smtpd_discard_ehlo_keywords=silent-discard,dsn
submission inet n - n - - smtpd
-o smtpd_sasl_auth_enable=yes
请注意,从安全角度来看,该解决方案是有缺陷的 - DSN 仍然广泛可用 - 除非采取其他安全措施限制对端口 587 上的守护进程的访问。