Бэкап на почту
-
Тем, кто периодически крутит свой pfsense, посвящается.
Бэкап как известно хорош регулярностью. И чем дальше хранится он от сервака тем не хуже ;D
Поэтому я решил бэкапиться на Gmail, ибо нефиг!
Тут меня ожидал небольшой полярный собака, нету в pfsense 1.2.3 почтаря как класса, но где наши не пропадали…Делай раз:
Ставим пакадж "Stunnel" (потому как Gmail тоже собака и без SSL к нему не подъедешь)
stunnel, тоже самка собаки, потому как в его GUI нет чудесной галки "Client mode", поэтому её можно прописать или руками в конфиг, или дорисовать в веб морду
рисуем морду в "stunnel.xml"после
<field><fielddescr>Outgoing source IP</fielddescr> <fieldname>sourceip</fieldname> <description>Enter the source IP address for outgoing connections.</description> <type>input</type></field>
добавляем
<field><fielddescr>Client mode</fielddescr> <fieldname>clientmode</fieldname> <description>Check this to enable "Client mode".</description> <type>checkbox</type></field>
добавляем логику в stunnel.inc
послеforeach($config['installedpackages']['stunnel']['config'] as $pkgconfig) { fwrite($fout, "\n[" . $pkgconfig['description'] . "]\n");
добавляем
if($pkgconfig['clientmode']) fwrite($fout, "client = yes" . "\n");
Делай два:
добавляем туннель с такими параметрамиListen on IP : 127.0.0.1 Listen on port: 25 Certificate: default Redirects to IP: smtp.gmail.com Redirects to Port: 465 Outgoing source IP: "адрес смотрящий в инет" Client mode: "отмечено"
записываем и вуаля, туннель готов
Делай три:
пишем скрипт отправки на шелле.
Gmail требует имя пользователя и пароль в кодировке BASE64, поэтому озаботимся этим заранее, например тут http://www5.rptea.com/base64/
делаем ANSI->Base64
ну и вот он, наш красавец, скрипт отправки#!/bin/sh SUBJECT="" CONTENT="" MAILSRV="127.0.0.1" SUBJECT="SUBJECT: Current config file: "`date +%Y" "%m" "%d` CONTENT="/cf/conf/config.xml" if [ -n "$SUBJECT" ]; then ( sleep 1 echo "EHLO pfsense" sleep 1 echo "AUTH LOGIN" sleep 1 echo "login_IN_BASE64" sleep 1 echo "password_IN_BASE64" sleep 1 echo "MAIL FROM:<pfs@gmail.com>" sleep 1 echo "RCPT TO:<mymail@gmail.com>" sleep 1 echo "DATA" sleep 1 echo $SUBJECT sleep 1 echo "TO:<mymail@gmail.com>" sleep 1 echo " " cat "$CONTENT" sleep 1 echo "." sleep 1 echo "QUIT" ) | telnet $MAILSRV 25 fi exit</mymail@gmail.com></mymail@gmail.com></pfs@gmail.com>
кидаем в папочку рута или куда там положено кидать выполняемые скрипты и делаем это добро выполняемым.
Делай четыре:
Ставим пакадж "Cron" и у нас появится возможность нарисовать задание на выполнение нашей прелести скажем раз в неделю.
особым шиком я считаю не ставить этот пакадж и в консоли штатными средствами "crontab -e" используя чудо редактор vi, прописать
нужное нам расписание.ну и на последок, на Gmail-e делаем правило сортировки по содержимому типа "Current config file:" -> кидать в папочку "ххх"
и нехай оно там тухнет :)В заключение:
Вот такой набор костылей у меня получился. Во второй версии сенса почтовый агент уже добавлен, так что всё будет сильно проще.
Да и делалось это больше "Just for fun"Использованная литература:
Google по словам и сочетаниям: gmail stunnel pfsense smtp telnet -
Красиво пишешь. Спасибо. Добавь это дело в вики пожалуйста и… пиши ещё -)
-
Красиво пишешь. Спасибо. Добавь это дело в вики пожалуйста и… пиши ещё -)
+500
Вот побольше бы таких авторов. :) -
Спасибо! молодчина!