У меня есть локальный сервер разработки (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 вашего сервера, для этого вы должны проверить, какой у вас сервер, и настроить его соответствующим образом.
В случае постфикса:
добавьте в /etc/postfix/main.cf следующее: transport_maps = hash:/etc/postfix/transport_maps
создать файл /etc/postfix/transport_maps
со следующим содержанием:
alloweddomain.com : * discard:
хеш: запустить postmap /etc/postfix/transport_maps
перезапустить постфикс