Бэкап на почту



  • Тем, кто периодически крутит свой 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



  • Красиво пишешь. Спасибо. Добавь это дело в вики пожалуйста и… пиши ещё -)



  • @Evgeny:

    Красиво пишешь. Спасибо. Добавь это дело в вики пожалуйста и… пиши ещё -)

    +500
    Вот побольше бы таких авторов. :)



  • Спасибо! молодчина!


Locked