如何configurationsendmail只发送到指定的域?

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

我想避免开发服务器发送电子邮件给没有特定域的电子邮件地址的人(即:[email protected][email protected]等)。 所以,我想在服务器上创build一个白名单或规则,防止邮件发送到任何不符合mydomain.com的电子邮件地址。

我目前正在使用PHP内置的mail()函数。 但我想这是更多的服务器级别的东西,我想要的东西,将pipe理从任何程序/应用程序/脚本/ /等从服务器发出的任何电子邮件。

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

PHP mail()函数根据MTA发送的消息在php.ini设置为sendmail_path值,默认情况下设置为:

 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更改为您的自定义脚本,相应地编写parsing器和筛选消息。 这只会影响sendmail_path发生更改的通过PHP mail()发送的传出邮件。

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

在后缀的情况下:

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

  2. 使用以下内容创build文件/etc/postfix/transport_maps

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

  4. 重新启动后缀

这是我如何设法做到这一点。 在Sendmail中,你需要修改mailertable。 添加以下内容:

 alloweddomainname.com alloweddomainname.com . error: 

这将主要发送任何电子邮件到@ alloweddomainname.com和任何其他错误。