我们在 centos webserver 中安装了 postfix 邮件服务器。在该服务器中,用户可以从虚假的电子邮件 ID 发送邮件,例如[电子邮件保护]和所有。
但是我在该服务器中只有一个域,因此我需要阻止虚假 ID 并仅为我的 example.com 域授予权限。
如果我编辑 /etc/postfix/header_checks 或在传输中我们会被阻止吗?
所有外发邮件将仅通过我的 example.com 发送。请大家帮帮我。
答案1
强制用户使用电子邮件地址,例如[电子邮件保护]对于从服务器内部发送的邮件,您可以使用此配置
smtpd_restriction_classes =
inside
inside =
check_sender_access hash:/etc/postfix/allowed_senders
reject
smtpd_recipient_restrictions =
reject_unauth_destination
check_client_access hash:/etc/postfix/inside_network
... your favourite anti spam stuff here ...
permit
在/etc/postfix/inside_network中
127.0.0.1 inside
hostname.example.lan inside
在/etc/postfix/allowed_senders中:
example.lan OK
来源: http://www.arschkrebs.de/postfix/postfix_restriction_classes3_en.shtml http://www.arschkrebs.de/postfix/postfix_restriction_classes2_en.shtml
答案2
在我遇到同样的问题后,我快速搜索了一下,找到了以下内容(被盗版了http://www.bentasker.co.uk/documentation/linux/161-configuring-postfix-to-block-outgoing-mail-to-all-but-one-domain)
我想在这里分享
使用传输映射 使用这种方法,我们可以告诉 Postfix 拒绝邮件或忽略它。后者通常是首选方法,因为我们希望发送应用程序相信邮件已发送。
首先我们需要编辑 postfix 配置文件
nano /etc/postfix/main.cf
现在搜索 transport_maps (Ctrl-W, transport_maps -> Enter)。你应该找不到任何东西(如果找到了,请跳过下一步,但要记下列出的文件)
添加一行阅读
transport_maps = hash:/etc/postfix/transport
注意:根据您运行的 Postfix 版本,您可以使用 texthash,这样就无需在文件上运行 postmap。读者可以自行决定他们喜欢哪种路由,但如果您的 postfix 版本低于 2.8,则不能使用 texthash。
保存并关闭(Ctrl-X,Y -> Enter)
现在我们需要更新传输图(如果不需要添加行,请在此处替换相关文件路径)
nano /etc/postfix/transport
现在我们需要添加一行来指定允许发送到哪个域(我将允许发送到 bentasker.co.uk)。为此,请插入以下行
example.com :
* discard:
这将丢弃发往不属于 bentasker.co.uk 域名的任何电子邮件地址的邮件。如果您想拒绝并显示错误,您可以使用(设置错误文本以满足您的需求)
example.com:
* error: Only allowing one domain
注意:只需在 bentasker.co.uk: 后面的行上添加其他域名即可,每个域名一行。
保存并关闭(Ctrl-X,Y -> Enter)
现在我们需要创建文件的哈希值(除非你在 main.cf 中使用了 texthash)
postmap /etc/postfix/transport
最后,我们需要 Postfix 重新加载它的规则
/etc/init.d/postfix reload
大功告成!现在您应该会发现发送到未指定域的电子邮件会被默默丢弃,而发送到白名单域的电子邮件则会正常通过。不过,请务必检查更改是否有效,mailq 和 maillog 是您的好朋友!
对于非白名单域,您应该看到消息在邮件日志中被删除,但之前没有进行任何连接,并且中继显示为无(可能没有连接的迹象,但如果中继!=无,则很有可能邮件已发送)。