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

в 23:34, , рубрики: fakesmtp, linux, smtp, Веб-разработка, заглушка stmp, Программирование

Для ленивых и не желающих возиться, сдувать пыль с бубна по настройке 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

Автор: romy4

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js