Я создал небольшой сценарий оболочки, который записывает все входные данные в файл журнала, и я подумал, что смогу заменить двоичный файл sendmail и, таким образом, найти простой способ имитировать доставку электронной почты без фактической настройки работающего sendmail..
Однако это не удалось.По причинам, которые я не могу понять.
Я посмотрел на исходный текст PHP mail.c и, насколько я понимаю (учтите, я не очень разбираюсь в C), PHP выполняет и общается напрямую сдвоичный файл (устанавливается в sendmail_path
).Но файлы журнала не создаются, когда я заменяю двоичный файл sendmail своим сценарием, и сценарий, заменяющий sendmail, всегда будет создавать файл журнала при его выполнении, независимо от того, присутствует вход или нет.
Сам сценарий работаетхорошо.Его коды возврата должны соответствовать кодам отправки.С той разницей, что мой скрипт всегда возвращает 0, независимо от ввода, так как я не очень заинтересован в проверке правильности ввода - просто, что я получаю некоторые.
Возможно ли добиться чего?Я хочу, т.е. используя симулятор sendmail?
Источник сценария указан ниже:
#!/bin/bash
LOGDIR=/tmp/sendmail-sim
NOW=$(date +%Y%m%dT%H%M)
CNT=1
FILENAME="$LOGDIR/$NOW.$CNT.log"
while [ -f $FILENAME ]; do
CNT=$(($CNT + 1))
FILENAME="$LOGDIR/$NOW.$CNT.log"
done
echo "$0 $*" > $FILENAME
while read BUF
do
echo $BUF >> $FILENAME
done
exit 0
PS.Мой текущий sendmail (или фактически postfix) действительно получает электронную почту от PHP, но я не хочу на самом деле отправлять какие-либо электронные письма или мне нужно копаться в его 'очереди почты в процессе разработки.