Назад | Перейти на главную страницу

Как настроить sendmail для отправки только на указанные домены?

У меня есть локальный сервер разработки (centos), на котором я разрабатываю несколько веб-сайтов. Иногда мне нужно протестировать сценарии отправки электронной почты.

Я хочу, чтобы сервер разработки не отправлял электронные письма всем, у кого нет адреса электронной почты с определенным доменом (например, jon@mydomain.com, mary@mydomain.com и т. Д.). Итак, я хотел бы создать белый список или правило на сервере, которое предотвращает отправку электронных писем на любой адрес электронной почты, который не соответствует mydomain.com.

В настоящее время я использую встроенную функцию PHP mail (). Но я полагаю, что это что-то большее на уровне сервера, и я хотел бы что-то, что будет управлять ЛЮБЫМИ электронными письмами, отправленными с сервера из любой программы / приложения / скрипта / и т. Д.

Я могу подтвердить, что PHP использует /usr/sbin/sendmail.sendmail

вот как мне это удалось. В Sendmail вам нужно изменить почтовую таблицу. Добавьте следующее:

alloweddomainname.com   alloweddomainname.com
.   error:

По сути, это отправит любые электронные письма на @ alloweddomainname.com и ошибку для чего-либо еще.

PHP mail() функция отправляет сообщения в соответствии с MTA, установленным как sendmail_path ценность в 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

Итак, согласно этому вы можете:

Перемена sendmail_path в свой собственный сценарий, напишите парсер и соответствующим образом отфильтруйте сообщения. Это повлияет только на исходящие сообщения, отправленные через PHP. mail() где sendmail_path был изменен.

Б. изменить конфигурацию почтового сервера - это повлияет на все сообщения, отправляемые через 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. перезапустить постфикс