如何配置 sendmail 以便仅发送到指定的域?

如何配置 sendmail 以便仅发送到指定的域?

我有一个本地开发服务器(centos),我在上面开发了一些网站。有时我需要测试电子邮件发送脚本。

我想避免开发服务器向没有特定域名的电子邮件地址的任何人发送电子邮件(即:[电子邮件保护][电子邮件保护]等)。因此,我想在服务器上创建一个白名单或规则,以防止将电子邮件发送到任何与 mydomain.com 不匹配的电子邮件地址。

我目前正在使用 PHP 的内置 mail() 函数。但我认为这更像是服务器级别的功能,我希望有某种功能可以管理任何程序/应用程序/脚本等从服务器发出的任何电子邮件。

我可以确认 PHP 正在使用 /usr/sbin/sendmail.sendmail

答案1

以下是我成功的方法。在 Sendmail 中,您需要修改 mailertable。添加以下内容:

alloweddomainname.com   alloweddomainname.com
.   error:

这实际上会将所有电子邮件发送到@alloweddomainname.com,而其他任何电子邮件都会出错。

答案2

PHPmail()函数根据sendmail_path中设置的 MTA 值发送邮件php.ini,默认设置如下:

sendmail_path = /usr/sbin/sendmail -t -i

在某些系统上,它是 MTA 二进制文件的符号链接,在我的情况下,它是与 sendmail 兼容的 postfix MTA 包二进制文件,在其他情况下,它可能是 sendmail 或 qmail 或您使用的任何文件:

[root@giomacdesk ~]# ll /usr/sbin/sendmail
lrwxrwxrwx. 1 root root 21 ივლ  3 11:33 /usr/sbin/sendmail -> /etc/alternatives/mta
[root@giomacdesk ~]# ll /etc/alternatives/mta
lrwxrwxrwx. 1 root root 26 ივლ  3 11:33 /etc/alternatives/mta -> /usr/sbin/sendmail.postfix

因此,据此您可以:

A. 更改您的自定义脚本,编写解析器并相应地过滤消息。这将sendmail_path仅影响通过 PHP 发送的外发消息。mail()sendmail_path

B.更改邮件服务器的配置 - 这将影响通过服务器的 MTA 发送的所有消息,为此您必须检查您的服务器是什么并进行相应的配置。

如果是后缀:

  1. 将以下内容添加到 /etc/postfix/main.cf:transport_maps = hash:/etc/postfix/transport_maps

  2. 创建/etc/postfix/transport_maps包含以下内容的文件:

     alloweddomain.com :
     * discard:
    
  3. 哈希:运行postmap /etc/postfix/transport_maps

  4. 重启 postfix

相关内容