Pull to refresh

Простейший SMTP сервер для разработок

Website developmentProgramming
Для ленивых и не желающих возиться, сдувать пыль с бубна по настройке exim4/postfix/sendmail предлагается простейший сборщик почты написанный на Python[1].

Его работа заключается в сборе всей почты, посылаемой этому фейковому smtp серверу и складывании её в указанную папку /tmp/mails в виде файлов писем nobody@mail.local.1 с порядковым номером.


Шаг №1: установка nullmailer


В стандартных репах должен быть nullmailer. Если нет, то качаем, а есть то устанавливаем:
sudo apt-get install nullmailer


Идём в /etc/nullmailer и в файле remotes добавляем:
localhost smtp


Перезапускаем:
service nullmailer restart


В Debian-подобных линуксах очередь писем находится в /var/spool/nullmailer/queue/

Шаг №2: установка fakemail


Качаем скрипт fakemail, распаковываем. Если стандартно, то запускаем
python setup.py install
или копируем файл fakemail.py куда надо.

Теперь хотелось бы его сделать запускаемым как сервис, а не просто висящим в консоли.
Для этого создаём файл /etc/init.d/fakemail и вставляем в него следующий код:
Скрытый текст
#!/bin/sh

set -e

NAME=fakemail
DAEMON=/usr/local/bin/$NAME.py
DOPTIONS="--path=/tmp/mails"

test -x "$DAEMON" || exit 0

PIDDIR=/var/run
PIDFILE=$PIDDIR/$NAME.pid

LANG=C
export LANG

. /lib/lsb/init-functions


start_fakemail()
{
    start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --exec $DAEMON -- $DOPTIONS >/dev/null 2>&1 &
}

stop_fakemail()
{
    if [ -f "$PIDFILE" ]; then
        PID=`cat $PIDFILE`
        kill -2 $PID
        rm -f "$PIDFILE"
    fi
}

case "$1" in
    start)
        log_daemon_msg "Starting MTA"
        start_fakemail
        ;;
    stop)
        log_daemon_msg "Stopping MTA"
        stop_fakemail
        ;;
    restart)
        stop_fakemail
        start_fakemail
        ;;
esac

exit 0



Если вы копировали руками файл, то, возможно, стоит отредактировать файл и в 6 строке, где DAEMON, заменить путь к нашему питоновскому файлу.

Делаем запускаемым:
sudo chmod +x /etc/init.d/fakemail


Теперь надо создать (под рутом) папку mails в /tmp[2]
sudo mkdir /tmp/mails


И добавить ссылкы на сервис во время завершения работы системы:
sudo ln -s /etc/init.d/fakemail /etc/rc0.d/K20fakemail
sudo ln -s /etc/init.d/fakemail /etc/rc1.d/K20fakemail
sudo ln -s /etc/init.d/fakemail /etc/rc6.d/K20fakemail


Если вам нужно, чтобы он так же автоматически стартовал, то добавьте следующее:
код для добавления в автозапуск
sudo ln -s /etc/init.d/fakemail /etc/rc2.d/S20fakemail
sudo ln -s /etc/init.d/fakemail /etc/rc3.d/S20fakemail
sudo ln -s /etc/init.d/fakemail /etc/rc4.d/S20fakemail
sudo ln -s /etc/init.d/fakemail /etc/rc5.d/S20fakemail


Запускаем сервис:
service fakemail start


[1] основной материал был найден по ссылке, я лишь дописал сервис.

[2] можно и любую другую папку, но тогда надо внутри /etc/init.d/fakemail где DOPTIONS= изменить ваш путь --path=/path/to/folder
Tags:smtpвеб-разработказаглушка stmpfakesmtplinux
Hubs: Website development Programming
Rating +12
Views 22k Add to bookmarks 159
Comments
Comments 21

Popular right now