Записывать всю исходящую почту из PHP на ящик Redhat
IP одного из наших серверов занесен в черный список, и я хотел бы попытаться выяснить, почему. На сервере есть много виртуальных хостов Apache, поэтому журналирование должно быть разделено по доменам и, если возможно, включать имя файла сценария PHP, инициировавшего почтовый вызов.
Почтовым сервером является Qmail, а на сервере работает Redhat Linux.
Это возможно? Если да, пожалуйста, подробно опишите, как этого добиться.
Благодарю.
3 ответа
Завершил путь по оболочке sendmail, используя следующий ресурс: http://kb.parallels.com/1711
Есть способ узнать, из какой папки запускается PHP-скрипт, который отправляет почту. Обратите внимание, что пути могут немного отличаться от перечисленных ниже в зависимости от вашей ОС и версии Plesk:
1) создать скрипт /var/qmail/bin/sendmail-wrapper с содержимым:
! / bin / sh (echo X-Additional-Header: $ PWD; cat) | tee -a /var/tmp/mail.send|/var/qmail/bin/sendmail-qmail "$ @"
Обратите внимание, это должны быть две строки, включая "#!/ Bin / sh". 2) затем создайте файл журнала /var/tmp/mail.send и предоставьте ему права "a+rw", сделайте упаковщик e> xecutable, переименуйте старый sendmail и свяжите его с новой оболочкой: ~# touch /var/tmp/mail.send ~# chmod a+rw /var/tmp/mail.send ~# chmod a+x /var/qmail/bin/sendmail-wrapper ~# mv /var/qmail/bin/sendmail /var/qmail/bin/sendmail-qmail ~# ln -s /var/qmail/bin/sendmail-wrapper /var/qmail/bin/sendmail 3) Подождите около часа и верните назад sendmail:
~ # rm -f / var / qmail / bin / sendmail ~ # ln -s / var / qmail / bin / sendmail-qmail / var / qmail / bin / sendmail
Изучите файл /var/tmp/mail.send, там должны быть строки, начинающиеся с "X-Additional-Header:", указывающие на папки доменов, в которых находятся скрипты, отправляющие почту. Вы можете увидеть все папки почтовых PHP-скриптов, из которых были запущены следующие команды:
~ # grep X-Additional /var/tmp/mail.send | Grep
cat /etc/psa/psa.conf | grep HTTPD_VHOSTS_D | sed -e 's/HTTPD_VHOSTS_D//'
Если вы не видите вывод команды выше, это означает, что никакая почта не была отправлена с использованием функции PHP mail() из каталога виртуальных хостов Plesk.
Я не знаю о регистрации PHP-скрипта или каких-либо битов, связанных с веб-сервером, но qmail (и почти любой другой MTA) обычно регистрирует то, что было отправлено - по крайней мере адреса MAIL FROM & RCPT TO и почтовый сервер передал сообщение.
Вы, вероятно, можете проанализировать свои журналы qmail, чтобы иметь представление о том, что отправлялось / отправлялось, что могло попасть в черный список.
Кроме того, если вы знаете, в какие черные списки вы входите, это может дать вам представление о том, что происходит.
Если вы используете PHP 5.3 или более позднюю версию, вы можете сделать так, чтобы PHP автоматически регистрировал всю информацию, которую вы ищете, никаких скриптов-обёрток не требуется