imported>Vix |
imported>Vix |
Строка 1: |
Строка 1: |
| Прокси сервер который умеет '''HTTP\HTTPS''', ознакомится можно [https://ru.wikipedia.org/wiki/3proxy тут].
| | '''Установка и настройка''' |
| | |
| | Прежде всего обновите локальный список пакетов с помощью вашего пакетного менеджера, например на Ubuntu и Debian это можно сделать с помощью apt: |
| | apt-get update |
| | |
| | Для установки выполните команду: |
| | apt-get install exim4 |
| | |
| | Примечание: если вам необходимо использовать ACL и другие расширенные функции, то установите exim4-daemon-heavy: |
| | apt-get install exim4-daemon-heavy |
| | |
| | Чтобы перейти к настройке, выполните команду: |
| | dpkg-reconfigure exim4-config |
| | |
| | Нажмите Ok для начала настройки. |
| | '''РЕШЕНИЕ ПРОБЛЕМ''' |
| <hr> | | <hr> |
| Для установки в '''Debian 7,8,9''' - необходимо сделать сдледующее:
| | * '''defer (-53): retry time not reached for any host''' |
| | Повреждены ваши exim db Это возможно связанно с недоступостью почтового сервера какой-то время. |
|
| |
|
| 1. скачать архив последней версии [https://github.com/z3APA3A/3proxy тут]:
| | '''решение:''' |
| * - через '''git''':
| |
| git clone https://github.com/z3APA3A/3proxy.git
| |
| * - или скачиваем '''архивом'''
| |
| wget -c https://github.com/z3APA3A/3proxy/releases
| |
|
| |
|
| 2. если копия сделана через '''git''' то просто создаем в папке '''3proxy''' файл будущего скрипта инсталлятора '''debinstall.sh'''
| | cd /var/spool/exim/db |
| cd 3proxy | | rm -f retry retry.lockfile |
| touch debinstall.sh | | rm -f wait-remote_smtp wait-remote_smtp.lockfile |
| | service exim restart |
|
| |
|
| иначе распаковываем архив и также создаем этот файл.<br>
| | В дальнейшим имеет смысл: внести изменения в /etc/exim/exim.conf |
| Далее..
| | в раздел |
| вносим содержимое:
| |
|
| |
|
| #!/bin/bash | | begin retry |
| # author Koshuba V.O. | | * rcpt_451 F,1h,15m |
| # config examples & init.d script author Altavista375
| | * refused F,1h,2m |
| # (c) 2018
| | * timeout_connect F,2h,2m; F,6h,1h; F,4d,6h |
| # the install for Debian
| | * * F,2h,2m; G,16h,1h,1.5; F,4d,6h |
| #
| |
| option=$1;
| |
| getpkg=( "build-essential" "wget" "tar" "gzip" );
| |
| log="/var/log/syslog";
| |
| deb_release="";
| |
|
| |
| ## functions & operations
| |
| operation_install=( "checkDep" "install" "printInfo" );
| |
| operation_uninstall=( "checkDep" "uninstall" "printInfo" );
| |
| operation_help=( "printInfo" );
| |
| execute_func=();
| |
| ##
| |
|
| |
| ## -@F logic executor
| |
| function eXlogic() { | |
| lEnd=1;
| |
| if [[ ${#iFs[@]} -eq 0 ]]||[[ ${#iFs[@]} != ${#logic[@]} ]]
| |
| then echo "exit - eXlogic";
| |
| exit 0;
| |
| fi
| |
|
| |
| local exfunc=();
| |
| for ((lg_index=0; lg_index != ${#iFs[@]}; lg_index++))
| |
| do
| |
| ## !! debug operation...
| |
| #echo "eXlogic = execution: function ${iFs[$lg_index]} : index=$lg_index";
| |
| local lg=$(echo $((${iFs[$lg_index]})) );
| |
| local exfunc=( ${logic[$lg_index]} );
| |
| local runfunc=$(echo ${exfunc[$lg]}| sed 's/\"//g');
| |
| $runfunc;
| |
| if [[ $lEnd == 0 ]]
| |
| then lg_index=$((${#iFs[@]}-1));
| |
| fi
| |
| done
| |
| iFs=();
| |
| logic=();
| |
| value_in="";
| |
| }
| |
|
| |
| ##--@F write log events
| |
| function writeToLog() { | |
| for ((rpt_index=0; rpt_index != ${#reports[@]}; rpt_index++))
| |
| do
| |
| echo "$rdate 3proxy install message: ${reports[$rpt_index]}">>$log;
| |
| done
| |
| }
| |
|
| |
|
| |
| ##--@F make all errors
| |
| function makeErr() {
| |
| reports[${#reports[@]}]="Operation not succeded";
| |
| printInfo;
| |
| writeToLog;
| |
| exit 0;
| |
| }
| |
|
| |
| ##--@F Check the program dependency
| |
| function checkDep() {
| |
| if [[ ! $(apt-cache policy ${getpkg[@]} | grep status|wc -l) = $(echo -e ${#getpkg[@]}) ]];
| |
| then apt-get install $(echo ${getpkg[@]});
| |
| fi
| |
|
| |
| for ((ipkg=0; ipkg != ${#getpkg[@]}; ipkg++))
| |
| do
| |
| if [ ! "$(apt-cache policy ${getpkg[$ipkg]} | grep status)" ]
| |
| then
| |
| ## lang messages if yes then lang else us...
| |
| reports[${#reports[@]}]="Do not set ${getpkg[$ipkg]} package";
| |
| makeErr;
| |
| fi
| |
| done
| |
| local lsbtools=$(whereis -b lsb_release|awk '/^lsb_release:/{print $2}');
| |
| deb_release=$( $lsbtools -r|awk '/^Release:/{print $2}'|sed 's/\./ /g'|awk '{print$1}' );
| |
| }
| |
|
| |
|
| |
| function printInfo() {
| |
| value_in="$option";
| |
| iFs=( "$(echo -n $value_in|wc -m) == 0"
| |
| "$(echo -n $value_in|sed 's/--help//g'|wc -m) == 0"
| |
| "$(echo -n ${#reports[@]}) == 0" );
| |
|
| |
| logic=( '"" "pIhelp"'
| |
| '"" "pIhelp"'
| |
| '"pIdf" "pIhelp"' );
| |
|
| |
| function pIhelp() {
| |
| lEnd=0;
| |
| clear
| |
| echo
| |
| echo -e "install: debinstall.sh --install";
| |
| echo -e "uninstall: debinstall.sh --uninstall";
| |
| echo -e "help: debinstall.sh --help";
| |
| exit 0;
| |
| }
| |
|
| |
| ## default function last eXlogic..
| |
| function pIdf() {
| |
| for ((rpt_index=0; rpt_index != ${#reports[@]}; rpt_index++))
| |
| do
| |
| echo "${reports[$rpt_index]}";
| |
| done
| |
| exit 0;
| |
| }
| |
| eXlogic;
| |
| }
| |
|
| |
|
| |
| ## -@F install 3proxy
| |
| function install() {
| |
|
| |
| make -f Makefile.Linux
| |
|
| |
| if [ ! -d "/etc/3proxy" ]
| |
| then
| |
| mkdir -p /etc/3proxy;
| |
| fi
| |
|
| |
| cp $PWD/bin/3proxy /usr/bin/
| |
| adduser --system --no-create-home --disabled-login --group proxy3
| |
| chown proxy3:proxy3 /usr/bin/3proxy
| |
|
| |
| iduser=$(id -u proxy3);
| |
| idgroup=$(id -g proxy3);
| |
|
| |
| # config examples author Altavista375
| |
| touch /etc/3proxy/3proxy.cfg
| |
| echo -e '# Запускаем сервер от пользователя proxy3
| |
| # (возможно в вашей ОС uid и gid пользователя proxy3
| |
| # будут другими. Для их определения воспользуйтесь командой id proxy3)
| |
| setgid '"$idgroup"'
| |
| setuid '"$iduser"'
| |
| #
| |
| # Пропишите правильные серверы имен посмотрев их
| |
| # на своем сервере в /etc/resolv.conf
| |
| nserver 127.0.0.1
| |
| #
| |
| # Оставьте размер кэша для запросов DNS по умолчанию
| |
| nscache 65536
| |
| #
| |
| # Равно как и таймауты
| |
| timeouts 1 5 30 60 180 1800 15 60
| |
| #
| |
| # Если несколько IP на одном сервере, указываем тот,
| |
| # через который ходить во внешний мир. | |
| # Иначе эту строку игнорируем
| |
| #external <YOURSERVERIP>
| |
| # Тоже самое, только указываем IP, который надо слушать
| |
| # Если проигнорировать, то прокси слушает все адреса на сервере
| |
| #internal <YOURSERVERIP>
| |
| #
| |
| # Указываем на расположение файла с пользователями и паролями
| |
| #users $/etc/3proxy/.proxyauth
| |
| #
| |
| # укажите режим запуска как deamon
| |
| daemon
| |
| #
| |
| # путь к логам и формат лога, к имени лога будет добавляться дата создания
| |
| log /var/log/3proxy/3proxy.log D
| |
| logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
| |
| #
| |
| # Включаем авторизацию по логинам и паролям
| |
| #auth cache strong
| |
| #
| |
| # Конфигурация http(s) proxy
| |
| # Запускаем анонимный (-a) HTTP-proxy на порту (-p) 3128 и
| |
| # c отключенной NTLM-авторизацией (-n)
| |
| proxy -n -p3128 -a'>/etc/3proxy/3proxy.cfg
| |
| chown proxy3:proxy3 /etc/3proxy/3proxy.cfg
| |
| chmod 444 /etc/3proxy/3proxy.cfg
| |
|
| |
| if [ ! -d "/var/log/3proxy" ]
| |
| then
| |
| mkdir -p /var/log/3proxy;
| |
| chown proxy3:proxy3 /var/log/3proxy
| |
| fi
| |
|
| |
| # script starts 3proxy author Altavista375
| |
| touch /etc/init.d/3proxyinit
| |
| echo '#!/bin/sh
| |
| #
| |
| ### BEGIN INIT INFO
| |
| # Provides: 3Proxy
| |
| # Required-Start: $remote_fs $syslog
| |
| # Required-Stop: $remote_fs $syslog
| |
| # Default-Start: 2 3 4 5
| |
| # Default-Stop: 0 1 6
| |
| # Short-Description: Initialize 3proxy server
| |
| # Description: starts 3proxy
| |
| ### END INIT INFO
| |
|
| |
| case "$1" in
| |
| start)
| |
| echo Starting 3Proxy
| |
|
| |
| /usr/bin/3proxy /etc/3proxy/3proxy.cfg
| |
| ;;
| |
|
| |
| stop)
| |
| echo Stopping 3Proxy
| |
| /usr/bin/killall 3proxy
| |
| ;;
| |
|
| |
| restart|reload)
| |
| echo Reloading 3Proxy
| |
| /usr/bin/killall -s USR1 3proxy
| |
| ;;
| |
| *)
| |
| echo Usage: \$0 "{start|stop|restart}"
| |
| exit 1
| |
| esac
| |
| exit 0'>/etc/init.d/3proxyinit;
| |
| chmod 0644 /etc/init.d/3proxyinit;
| |
| chmod +x /etc/init.d/3proxyinit;
| |
|
| |
| if [[ $deb_release < 8 ]];
| |
| then
| |
| update-rc.d -n 3proxyinit defaults;
| |
| else
| |
| echo -e ' [Unit]
| |
| SourcePath=/etc/3proxy
| |
| Description=proxy
| |
| After=network-online.target
| |
| Wants=network-online.target
| |
| Conflicts=shutdown.target
| |
|
| |
| [Service]
| |
| User=proxy3
| |
| Group=proxy3
| |
| GuessMainPID=no
| |
| Type=notify
| |
| NotifyAccess=all
| |
| RemainAfterExit=yes
| |
| WorkingDirectory=/etc/3proxy/
| |
| ExecStart=/etc/init.d/3proxyinit start
| |
| ExecStop=/etc/init.d/3proxyinit stop
| |
| ExecReload=/etc/init.d/3proxyinit restart
| |
| TimeoutSec=5min
| |
|
| |
| [Install]
| |
| WantedBy=multi-user.target
| |
|
| |
| '>/lib/systemd/system/3proxy.service;
| |
| systemctl daemon-reload
| |
| /bin/systemctl enable 3proxy.service;
| |
| fi
| |
| #
| |
| reports[${#reports[@]}]="3proxy install susseful";
| |
| writeToLog;
| |
| printInfo;
| |
|
| |
| }
| |
|
| |
| ## -@F Uninstall 3proxy
| |
| function uninstall() {
| |
| if [[ $deb_release < 8 ]];
| |
| then
| |
| /etc/init.d/3proxyinit stop;
| |
| update-rc.d -n 3proxyinit remove;
| |
| else
| |
| /bin/systemctl stop 3proxy.service;
| |
| /bin/systemctl disable 3proxy.service;
| |
| rm /lib/systemd/system/3proxy.service;
| |
| systemctl daemon-reload;
| |
| fi
| |
| rm -f /etc/3proxy/3proxy.cfg;
| |
| rm -f /usr/bin/3proxy;
| |
| rm -rf /etc/3proxy;
| |
| deluser proxy3;
| |
| reports[${#reports[@]}]="3proxy uninstall susseful";
| |
| writeToLog;
| |
| printInfo;
| |
| }
| |
|
| |
| ##--@F executor
| |
| function executor() {
| |
| if [[ ${#execute_func[@]} -eq 0 ]]
| |
| then echo "exit";
| |
| exit 0;
| |
| fi
| |
| for ((ex_index=0; ex_index != ${#execute_func[@]}; ex_index++))
| |
| do
| |
| ## !! debug operation...
| |
| ##echo "execution: function ${execute_func[ex_index]}"
| |
| ${execute_func[ex_index]};
| |
| done
| |
| }
| |
|
| |
|
| |
|
| |
| ##- Begin 3proxy
| |
| case "$option" in
| |
|
| |
| ## install 3proxy
| |
| "--install" | "--install" )
| |
| execute_func=( ${operation_install[@]} );
| |
| executor;
| |
| exit 0
| |
| ;;
| |
|
| |
| ## uninstall 3proxy
| |
| "--uninstall" | "--uninstall" )
| |
| execute_func=( ${operation_uninstall[@]} );
| |
| executor;
| |
| exit 0
| |
| ;;
| |
|
| |
| ## help
| |
| "--help" | "--help" )
| |
| execute_func=( ${operation_help[@]} );
| |
| executor;
| |
| exit 0
| |
| ;;
| |
|
| |
| * )
| |
| # selecting defaults.
| |
| execute_func=( ${operation_help[@]} );
| |
| executor;
| |
| exit 1
| |
| ;;
| |
| esac
| |
|
| |
|
| |
|
| |
|
| |
| 3. даем права на запуск
| |
| chmod +x debinstall.sh
| |
|
| |
|
| 4. запускаем скрипт, он может потребовать доустановить пакеты - соглашаемся.
| | также обратите внимание на запуск с какой опцией он стартует: -q5m |
| скрипт дает подсказку при простом запуске или с ключем --help
| | * [https://www.linuxshop.ru/forum/f7/t31431--resheno-remote-smtp-defer-53-retry-time-not-reached-for-any-host-exchange-exim.html взято тут] |
|
| |
|
| 5. после установки правим конфигурационный файл /etc/3proxy/3proxy.cfg
| | * Для решения проблемы с ssl в exim4.conf.template изменить: |
| | ... |
| | REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = * |
|
| |
|
| Примеры можно посмотреть в папке с исходным кодом: ../3Proxy/cfg
| | на |
| | ... |
| | REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !* |
|
| |
|
| '''* PS/ почему я написал свой скрипт установки?'''<br>
| | * Если нужно жестко указать порт smtp, то: |
| Все просто, в установщике для '''Linux''' есть только установка под '''init.d''', а в новых версиях уже везде '''systemd'''.<br>
| | ... |
| Так как я уже делал подобное, то просто адаптировал свой инталлятор для данной установки.<br>
| | dc_smarthost='mail.myhost.ru::25' |
| Использовать его или нет, вопрос важего желания. Мой скрипт как ставит так и чистит все корректно.<br>
| | ... |
| Проверено в работе на '''Debian 8,9'''.
| |
|
| |
|
| '''ИСТОЧНИКИ:''' | | '''ИСТОЧНИКИ:''' |
| <hr> | | <hr> |
| | | * [https://qna.habr.com/q/146009 Exim и внешний SMTP сервер, как заставить ходить почту?] |
| * [https://community.vscale.io/hc/ru/community/posts/115001609005-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0-3proxy-%D0%BD%D0%B0-Debian-Ubuntu?page=1#community_comment_115001539545 Установка и настройка прокси-сервера 3proxy на Debian/Ubuntu ] | | * [https://1cloud.ru/help/linux/nastrojka-exim4 Настройка EXIM4 для отправки почтовых сообщений в Linux] |
| * [https://www.3proxy.ru/howtor.asp 3APA3A 3proxy tiny proxy server HowTo ] | | * [https://serverspace.by/support/help/nastroika-exim-4-na-ubuntu/ Ubuntu. Настройка Exim4] |
Установка и настройка
Прежде всего обновите локальный список пакетов с помощью вашего пакетного менеджера, например на Ubuntu и Debian это можно сделать с помощью apt:
apt-get update
Для установки выполните команду:
apt-get install exim4
Примечание: если вам необходимо использовать ACL и другие расширенные функции, то установите exim4-daemon-heavy:
apt-get install exim4-daemon-heavy
Чтобы перейти к настройке, выполните команду:
dpkg-reconfigure exim4-config
Нажмите Ok для начала настройки.
РЕШЕНИЕ ПРОБЛЕМ
- defer (-53): retry time not reached for any host
Повреждены ваши exim db Это возможно связанно с недоступостью почтового сервера какой-то время.
решение:
cd /var/spool/exim/db
rm -f retry retry.lockfile
rm -f wait-remote_smtp wait-remote_smtp.lockfile
service exim restart
В дальнейшим имеет смысл: внести изменения в /etc/exim/exim.conf
в раздел
begin retry
* rcpt_451 F,1h,15m
* refused F,1h,2m
* timeout_connect F,2h,2m; F,6h,1h; F,4d,6h
* * F,2h,2m; G,16h,1h,1.5; F,4d,6h
также обратите внимание на запуск с какой опцией он стартует: -q5m
- Для решения проблемы с ssl в exim4.conf.template изменить:
...
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = *
на
...
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !*
- Если нужно жестко указать порт smtp, то:
...
dc_smarthost='mail.myhost.ru::25'
...
ИСТОЧНИКИ: