«3proxy» и «Exim4»: разница между страницами

Материал из support.qbpro.ru
(Различия между страницами)
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>
Для установки необходимо сделать сдледующее:
* '''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
Далее..
в раздел


и вносим содержимое:
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


#!/bin/bash
также обратите внимание на запуск с какой опцией он стартует: -q5m
# author Koshuba V.O.
* [https://www.linuxshop.ru/forum/f7/t31431--resheno-remote-smtp-defer-53-retry-time-not-reached-for-any-host-exchange-exim.html взято тут]
# config examples & init.d script author Altavista375
# (c) 2018
# the install for Debian
#
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;
}
# 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;
}
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 zramraid
case "$option" in
## install zramraid
"--install" | "--install" )
execute_func=( ${operation_install[@]} );
executor;
exit 0
;;
## uninstall zramraid
"--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. запускаем скрипт, он может потребовать доустановить пакеты - соглашаемся.
* Для решения проблемы с ssl в exim4.conf.template изменить:
...
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = *


5. после установки правим конфигурационный файл /etc/3proxy/3proxy.cfg
на
...
REMOTE_SMTP_SMARTHOST_TLS_VERIFY_HOSTS = !*


Примеры можно посмотреть в папке с исходным кодом: ../3Proxy/cfg
* Если нужно жестко указать порт smtp, то:
...
dc_smarthost='mail.myhost.ru::25'
...


ИСТОЧНИКИ:
'''ИСТОЧНИКИ:'''
<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://serverspace.by/support/help/nastroika-exim-4-na-ubuntu/ Ubuntu. Настройка Exim4]

Версия от 19:39, 20 июля 2022

Установка и настройка

Прежде всего обновите локальный список пакетов с помощью вашего пакетного менеджера, например на 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'
...

ИСТОЧНИКИ: