Скрипт-заглушка Sendmail

21 Марта 2009 21:36 ::: Просмотров 7449 ::: Комментариев 5

Как то раз в целях отладки одного проекта на localhost`е нужно было проверить отправку сообщений электронной почты с сайта. Однако желания ставить на свой линукс Убунту почтовый сервер типа Exim или чего другого ради такой мелочи совершенно не было. За советом, как обычно, обратился к Гуглю. Долго ли, коротко ли, но приемлемое решение этой нетипичной задачи было найдено. Итак, что нужно сделать.

В директории /bin своей домашней папки я создал текстовый файлик с правом на выполнение такого содержания:

!/bin/sh
prefix="/home/vlad/fake-sendmail/new"
numPath="/home/vlad/fake-sendmail"
if [ ! -f $numPath/num ]; thenecho "0" > $numPath/num
fi
num=`cat $numPath/num`
num=$(($num + 1))
echo $num > $numPath/numname="$prefix/letter_$num.txt"
/bin/true
while read line
do
echo $line >> $name
done
chmod 777 $name

Создал директорию ~/fake-sendmail/new опять же в своей домашней папке - сюда будут падать письма в простом текстовом формате. Настройки в скрипте следует изменить на свои. В директории /usr/bin создал ссылку с именем sendmail на вышеописанный скрипт, эмулирующий почтовый сервер. Идея проста - клиент вызывает вместо почтового сервера для отправки письма наш скрипт, который перехватывает сообщение и записывает его в означенную папку. Всё, вуаля!

Глубокое спасибо автору скрипта! Насколько сейчас помню, решение найдено где-то на русском форуме убунту.

UPD. Здесь нашлась аналогичная статья. И кстати, в Убунте 9.10 имеют место некоторые проблемы. Быстрое решение - прописать в /etc/php5/apache2/php.ini явный путь к скрипту в домашней папке.

UPD2. Для разработки под виндовс тоже есть решение для тестирования отправки почты.

Возврат к списку