20 January 2009

Sendmail-заглушка для Linux

Configuring Linux
Не так давно встала задача, установить заглушку для sendmail, дабы письма из PHP не отсылались на ложные адреса (при тестинге) или просто не возникала ошибка, а складывались аккуратно в папку. Аналогично тому, как это делает Денвер.
Далее…

Поиск по просторам интернета ничего не дал, кроме советов читать мануал к sendmail. Но терпение и упорство сделали свое дело. И, спустя несколько дней, на одном из форумов нахожу интересный шелл-скрипт.
Мне пришлось немного поправить его, для своих нужд. Итак, тело скрипта:

#!/bin/sh
prefix="/var/mail/sendmail/new"
numPath="/var/mail/sendmail"

if [ ! -f $numPath/num ]; then
echo "0" > $numPath/num
fi
num=`cat $numPath/num`
num=$(($num + 1))
echo $num > $numPath/num

name="$prefix/letter_$num.txt"
while read line
do
echo $line >> $name
done
chmod 777 $name
/bin/true

Скрипт сохраняем в папку /usr/bin под любым угодным вам именем и делаем исполняемым (sudo chmod +x). Я использовал fake_sendmail.sh.

Теперь все исходящие письма будут складываться в /var/mail/sendmail. Так же необходимо выставить для папки права на запись. (chmod 777 -R /var/mail/sendmail).

Примечание:
Для сбора писем почтовиком (о чем ниже), нужно в этой папке создать следующую структуру папок:
/var/mail/sendmail/
— cur
— new
— tmp
И дать права на запись.

Настройка PHP.
У меня стоит Кубунта, так что все пути относительно нее. Итак, находим в папке /etc/php5/apache2 файл php.ini и меняем в нем путь к sendmail на:

sendmail_path = /usr/bin/fake_sendmail.sh.

Все, на этом можно и закончить. Далее читать страждущим юзабилити.

Привязка локальной папки к KMail.
Запускаем KMail и переходим в опции создания нового аккаунта:
Settings -> Configure KMail -> Accounts -> Add.

Выбираем maildir mailbox, а в настройках этого аккаунта, собственно, путь к папке с письмами (/var/mail/sendmail).
Все, закончено. Теперь эти письма можно будет забирать почтовиком и читать в удобоваримом виде.
Tags:sendmailзаглушкаlinux
Hubs: Configuring Linux
+39
35.1k 175
Comments 36