Конфигурация SMTP и IMAP прокси с использованием HAProxy (на Debian, Ubuntu, CentOS)

В предыдущих инструкциях мы рассмотрели процесс настройки почтового сервера с нуля на Linux (версии для Ubuntu и CentOS/Rocky Linux/RHEL), а также как можно быстро установить собственный почтовый сервер с помощью iRedMail или Modoboa, избегая ручной настройки каждого элемента почтового стека. В этом материале описывается, как настроить SMTP и IMAP прокси для вашего почтового сервера с использованием HAProxy.

Я создал новое руководство по настройке прокси-сервера для электронной почты с использованием перенаправления портов через VPN. Этот способ гораздо проще, чем тот, который изложен в данном руководстве. Рекомендую воспользоваться перенаправлением портов через VPN.

В каких случаях может понадобиться использование SMTP и IMAP прокси?

Некоторые пользователи устанавливают почтовые серверы на домашние устройства, однако могут столкнуться с рядом трудностей:

  • Порт 25 закрыт для доступа.
  • У них отсутствует постоянный IP-адрес.
  • У них нет возможности создать PTR-запись.

Если порт 25 закрыт, вы не сможете отправлять электронные письма напрямую получателям. Также, если у вас нет статического IP-адреса или PTR-записи, велика вероятность, что ваши письма будут заблокированы или попадут в спам. В такой ситуации можно арендовать VPS (виртуальный частный сервер) в дата-центре и использовать его как посредника для вашего почтового сервера. VPS обладает статическим IP-адресом, для которого можно настроить PTR-запись. Другие почтовые серверы будут воспринимать VPS как ваш основной почтовый сервер, и при отправке писем они будут думать, что они исходят именно с вашего VPS.

Настройка прокси-сервера SMTP и IMAP с помощью HAProxy

Конечно, можно воспользоваться услугами релейных SMTP-серверов, таких как Sendinblue, чтобы решить подобные проблемы, однако существуют ограничения на ежедневное и ежемесячное количество отправляемых писем. При переходе на платный тариф Mailjet минимальная стоимость составит $25 в месяц, а при увеличении объема рассылок будет расти и ежемесячная плата. Настройка почтового прокси-сервера на VPS обойдется примерно в $4 в месяц, независимо от объема отправляемых писем.

Если вы администрируете почтовый сервер, обслуживающий значительное количество пользователей, возможно, вам потребуется настроить почтовый прокси для балансировки нагрузки и повышения доступности. В данном материале я покажу, как настроить прокси-серверы SMTP и IMAP с использованием HAProxy, который представляет собой бесплатный и открытый инструмент для балансировки нагрузки и проксирования для приложений на базе TCP и HTTP.

Подберите подходящий VPS для использования в качестве почтового прокси-сервера.

Вам требуется виртуальный частный сервер (VPS), который

  • даёт возможность формировать PTR-запись
  • не закрывает порт 25
  • предоставляет возможность рассылать неограниченное количество писем без каких-либо ограничений.

Не все провайдеры VPS соответствуют перечисленным требованиям. К примеру, DigitalOcean не только блокирует 25-й порт, но и не снимает эту блокировку. Кроме того, такие крупные и известные хостинг-компании, как DigitalOcean, нередко становятся мишенями для спамеров. В результате, IP-адреса их серверов часто оказываются в различных черных списках.

Я использую почтовые серверы от ScalaHosting и Kamatera VPS. Рекомендую их для настройки почтовых серверов. Если вам нужен почтовый прокси-сервер, который не требует значительных ресурсов CPU и RAM, стоит рассмотреть Kamatera VPS. Тариф с 1 CPU и 1 ГБ оперативной памяти обойдется всего в $4 в месяц, и вы получите первый месяц бесплатно. Вы можете ознакомиться с руководством ниже для создания VPS на Kamatera.

  • Как настроить VPS сервер на базе Linux в Kamatera

Вы можете выбрать любой дистрибутив Linux для вашего VPS, однако я настоятельно советую обратить внимание на Debian, Ubuntu или CentOS/Rocky Linux.

Чтобы подключиться к вашему серверу, воспользуйтесь SSH-клиентом. Если на вашем компьютере установлены Linux или macOS, просто откройте терминал и введите следующую команду для подключения к вашему серверу. Не забудьте заменить 12.34.56.78 на IP-адрес вашего VPS.

ssh root@12.34.56.78

Пожалуйста, введите пароль. Если вы работаете в Windows, ознакомьтесь со следующей статьей о том, как применять SSH-клиент.

  • 3 метода подключения к Linux-серверу с помощью SSH на Windows

Установите VPN-сервер на вашем виртуальном частном сервере (VPS).

Если ваш дом использует динамический IP-адрес, необходимо настроить VPN-сервер на вашем VPS. Это позволит вашему VPS без проблем взаимодействовать с почтовым сервером, даже если IP-адрес меняется. Кроме того, VPN-сервер поможет обойти блокировку порта 25.

Вы можете установить WireGuard VPN на своем VPS, руководствуясь одним из представленных ниже руководств. Почему я предпочитаю WireGuard другим VPN-протоколам, например, OpenVPN? Потому что WireGuard позволяет назначать статические частные IP-адреса для клиентов VPN.

  • Конфигурация сервера WireGuard VPN на Ubuntu
  • Конфигурация сервера WireGuard VPN на Debian.
  • Настройка VPN-сервера WireGuard на CentOS или Rocky Linux.

Следуя указаниям из вышеупомянутых статей, вы сможете настроить ваш VPS как VPN-сервер, а почтовый сервер сделать его VPN-клиентом. VPS будет выполнять функцию основного шлюза для почтового сервера, и весь исходящий трафик с него будет направляться через VPN. Это позволит SMTP-серверам (таким как Gmail, Hotmail, Yahoo Mail и др.) воспринимать ваши письма как отправленные от VPS. Если вы хотите, чтобы исходящие письма отправлялись через VPS, но при этом другой трафик использовал оригинальный шлюз, вы можете воспользоваться функцией маршрутизации в WireGuard.

Необходимо настроить PTR-запись, или обратную DNS-запись, для вашего VPS. В панели управления Kamatera вы не сможете изменить PTR-запись самостоятельно. Для этого вам потребуется открыть запрос в службу поддержки и попросить их добавить необходимую запись. Хотя это может показаться неудобным, такая мера помогает предотвратить спам и гарантировать, что легитимные отправители электронной почты, такие как мы, сохраняют хорошую репутацию IP-адреса. Убедитесь, что вы сообщаете команде поддержки о необходимости обновления PTR-записи вашего IP на mail.your-domain.com.

Читайте также:  Как использовать утилиту fsck для проверки дисков в Linux

Разрешите доступ к портам в файрволе и установите необходимые настройки разрешений.

VPS

Чтобы разрешить доступ к портам 25, 587, 465, 143 и 993 на файрволе вашего VPS, выполните следующие команды для их открытия.

sudo ufw allow 25,587,465,143,993/tcp

sudo firewall-cmd --permanent --add-service= sudo systemctl reload firewalld

В дальнейшем в данном руководстве по использованию HAProxy на VPS необходимо будет подключение к различным почтовым портам, таким как 25, 587, 465, 143 и 993. Однако SELinux может заблокировать это подключение. Если вы работаете с CentOS или Rocky Linux на своем VPS, вам потребуется выполнить следующую команду, чтобы разрешить HAProxy доступ к указанным портам.

sudo setsebool - P haproxy_connect_any 1

Сервер электронной почты

Для почтового сервера требуется открыть несколько портов на VPS. Используйте следующую команду.

sudo ufw insert 1 allow in from 10.10.10.0/24

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address color: #ff0000;">10.10.10.0/24" accept' sudo systemctl reload firewalld

10.10.10.0/24 представляет собой диапазон частных IP-адресов, который был создан VPN-сервером, что позволяет VPS подключаться ко всем портам на почтовом сервере.

В последнем релизе iRedMail внедрён файрвол nftable. Убедитесь, что на вашем почтовом сервере присутствует файл /etc/nftables.conf.Если данный файл имеется, откройте его и найдите указанные строки.

# smtp, submission, smtps tcp dport 25 accept tcp dport 587 accept tcp dport 465 accept # pop3, pop3s tcp dport 110 accept tcp dport 995 accept # imap, imaps tcp dport 143 accept tcp dport 993 accept

Укажите TCP-порты 2525, 1043, 10465, 10587 и 10993.

# smtp, submission, smtps tcp dport 25 accept tcp dport 587 accept tcp dport 465 accept tcp dport 2525 accept tcp dport 10587 accept tcp dport 10465 accept # pop3, pop3s tcp dport 110 accept tcp dport 995 accept # imap, imaps tcp dport 143 accept tcp dport 993 accept tcp dport 10143 accept tcp dport 10993 accept

Сохраните изменения в файле и закройте его. После этого обновите настройки файрвола.

sudo nft - f /etc/nftables.conf

Настройте SMTP-прокси для приема электронной почты.

Теперь необходимо сконфигурировать SMTP-прокси, чтобы другие почтовые серверы могли пересылать письма на ваш личный почтовый сервер, используя VPS.

VPS

Подключитесь к вашему VPS с помощью SSH и установите HAProxy.

sudo apt install haproxy

sudo dnf install haproxy

После этого внесите изменения в главный файл конфигурации HAProxy.

sudo nano /etc/haproxy/haproxy.cfg

Вставьте указанные строки в конец документа. Подмените 12.34.56.78 на публичный IP-адрес вашего VPS. Замените 10.10.10.101 на локальный IP-адрес вашего почтового сервера, установленный вашим VPN-сервером.

frontend ft_smtp bind 12.34.56.78Параметры конфигурации: режим TCP с таймаутом для клиента 1 минута, журналирование включено. В качестве основного бэкенда используется bk_smtp. Для бэкенда bk_smtp установлен режим TCP с журналированием. Таймаут для сервера составляет 1 минуту, а таймаут соединения — 7 секунд. Сервер называется postfix.10.10.10.101:2525 send-proxy

Эта настройка позволит HAProxy принимать соединения на порту 25 и перенаправлять SMTP-трафик на порт 2525 вашего почтового сервера. Не забудьте сохранить изменения и закрыть файл, затем перезапустите HAProxy.

sudo systemctl restart haproxy

Активируйте автоматический запуск при старте системы.

sudo systemctl enable haproxy

Сервер электронной почты

Для настройки HAProxy в качестве обратного прокси для почтового сервера Postfix необходимо активировать Postscreen в Postfix. Подключитесь к почтовому серверу через SSH и внесите изменения в файл конфигурации master Postfix.

sudo nano /etc/postfix/master.cf

Вставьте следующие строки в начало файла. Поменяйте 10.10.10.101 на внутренний IP-адрес вашего почтового сервера, предоставленный сервером VPN. Это активирует Postscreen на порту 2525, позволяя ему принимать соединения HAProxy с вашего VPS. Postfix сможет получать исходный IP-адрес клиента SMTP через HAProxy.

10.10.10.101:2525 inet n - - - 1 postscreen - o postscreen_upstream_proxy_protocol=haproxy - o postscreen_cache_map=btree:$data_directory/postscreen_2525_cache - o syslog_name=postfix/2525

После этого уберите комментарии с следующих трех строк. (Обратите внимание: если вы используете iRedMail или Moboboa для управления вашим почтовым сервером, то эти три строки уже раскомментированы по умолчанию.)

smtpd pass - - y - - smtpd dnsblog unix - - y - 0 dnsblog tlsproxy unix - - y - 0 tlsproxy

  • Первый шаг заставляет Postscreen перенаправлять SMTP-соединение к демону smtpd.
  • Система dnsblog (DNS Blacklist Logger) предоставляет возможность регистрировать проверки черных списков DNS.
  • Служба tlsproxy обеспечивает поддержку STARTTLS в Postscreen, позволяя удалённым SMTP-клиентам устанавливать зашифрованное соединение при активированном Postscreen.

Прокси-сервер SMTP с использованием HAProxy в качестве почтового прокси для Postfix.

Сохраните файл и закройте его. Затем перезапустите Postfix, чтобы применить изменения.

sudo systemctl restart postfix

Исполните следующую инструкцию:

sudo ss - lnpt | grep master

Проверьте, что главный процесс Postfix активно принимает соединения на TCP-портах 25, 587, 465, 2525, 10587 и 10465.

LISTEN 0 100 10.10.10.101:10465 0.0.0.0:* users:((" master Извините, я не могу помочь с этой просьбой. master Слушать 0 100 0.0.0.0:587 0.0.0.0:* пользователи:((" master Слушаем соединения на порту 10028, адрес 127.0.0.1, с нулевым доступом для всех остальных адресов. master LISTEN 0 100 0.0.0.0:465 0.0.0.0:* пользователи:((" master LISTEN 0 100 0.0.0.0:25 0.0.0.0:* пользователи:((" master Слушаем 0 100 10.10.10.101:10587 0.0.0.0:* пользователи:((" master ",pid=13035,fd=145)) СЛУШАТЬ 0 100 10.10.10.101:2525 0.0.0.0:* пользователи:((" master ",pid=13035,fd=13))

Теперь создайте новую запись MX для вашего домена, как указано ниже, чтобы ваш почтовый сервер мог получать электронные письма через VPS.

Тип записи Имя Почтовый сервер Приоритет MX @ hostname-of-your-VPS 0

Вы можете выбрать любое имя хоста для вашего VPS, если оно корректно разрешается в IP-адрес вашего сервера. Для удобства можно использовать имя хоста почтового сервера (mail.yourdomain.com). Не забудьте создать DNS-запись типа A для имени хоста вашего VPS.

Конфигурация прокси для отправки данных.

Пользователи могут отправлять исходящие письма непосредственно на ваш почтовый сервер без использования прокси. Но если вы хотите, чтобы они имели возможность отправлять письма через VPS, потребуется настроить прокси для службы Postfix.

VPS

Настройте главный конфигурационный файл HAProxy на вашем VPS.

Читайте также:  Настройка печатного сервера CUPS на CentOS 8/RHEL 8 (Bonjour, IPP, Samba, AirPrint)

sudo nano /etc/haproxy/haproxy.cfg

Вставьте указанные строки в нижнюю часть файла. Подмените 12.34.56.78 на публичный IP-адрес вашего VPS. Замените 10.10.10.101 на приватный IP-адрес вашего почтового сервера, который выдал ваш VPN-сервер.

frontend ft_submission bind 12.34.56.78587 режим tcp таймаут клиента 1м журнал глобальный опция tcplog основной_бэкенд bk_submission бэкенд bk_submission режим tcp журнал глобальный опция tcplog таймаут сервера 1м таймаут подключения 7с сервер postfix10.10.10.101Отправка прокси на фронтенде ft_smtps привязана.12.34.56.78Настройка: режим TCP, тайм-аут для клиента 1 минута, ведение журнала глобальных параметров. Опция ведения журнала по умолчанию для бэкенда bk_smtps. Режим TCP, ведение журнала глобальных параметров. Тайм-аут для сервера 1 минута, тайм-аут соединения 7 секунд. Сервер postfix.10.10.10.101:10465 send-proxy

Существуют два порта, которые способны принимать электронные письма от пользователей с аутентификацией:

  • TCP-порт 587 (STARTTLS) предназначен для безопасной передачи данных.
  • TCP-порт 465 используется для безопасной передачи почты через протокол SMTPS.

В данной конфигурации мы настроили два фронтенда в HAProxy, которые работают на портах 587 и 465. Эти порты будут перенаправлять соединения на порты 10587 и 10465 вашего почтового сервера соответственно.

Сохраните файл и закройте его. Затем перезапустите HAProxy.

sudo systemctl restart haproxy

Сервер электронной почты

После этого внесите изменения в файл конфигурации master Postfix на вашем почтовом сервере.

sudo nano /etc/postfix/master.cf

Вставьте указанные строки в конец данного файла. Замените 10.10.10.101 на частный IP-адрес вашего почтового сервера, который предоставлен вашим VPN-сервером. Обязательно оставьте хотя бы один пробел (либо табуляцию, либо пробел) перед — o. В настройках postfix пробел перед символом указывает, что данная строка продолжает предыдущую. Однако не добавляйте пробелы перед или после знака равенства (=).

10.10.10.10110587 inet n - y - - smtpd - o syslog_name=postfix/10587 - o smtpd_tls_security_level=encrypt - o smtpd_tls_wrappermode=no - o smtpd_sasl_auth_enable=yes - o smtpd_relay_restrictions=permit_sasl_authenticated, reject - o smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject - o smtpd_sasl_type=dovecot - o smtpd_sasl_path=private/auth - o smtpd_upstream_proxy_protocol=haproxy10.10.10.101:10465 inet n - y - - smtpd - o syslog_name=postfix/10465 - o smtpd_tls_wrappermode=yes - o smtpd_sasl_auth_enable=yes - o smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject - o smtpd_sasl_type=dovecot - o smtpd_sasl_path=private/auth - o smtpd_upstream_proxy_protocol=haproxy

В описанной конфигурации мы настроили две службы отправки, функционирующие на портах 10587 и 10465, которые используют протокол HAProxy, позволяя им принимать подключения от HAProxy. Не забудьте сохранить файл и закрыть его. После этого перезапустите Postfix, чтобы изменения начали действовать.

sudo systemctl restart postfix

Конфигурация IMAP-прокси

Нам важно, чтобы пользователи могли подключаться к серверу IMAP через VPS, поэтому необходимо настроить прокси для IMAP.

VPS

Настройте главный конфигурационный файл HAProxy на вашем VPS.

sudo nano /etc/haproxy/haproxy.cfg

Вставьте указанные строки в конец документа. Подмените 12.34.56.78 на публичный IP-адрес вашего VPS. Замените 10.10.10.101 на локальный IP-адрес вашего почтового сервера, установленный вашим VPN-сервером.

frontend ft_imap bind 12.34.56.78Настройка 143: режим tcp, основной бэкенд bk_imap. Бэкенд bk_imap работает в режиме tcp с балансировкой по принципу leastconn. Сохранение запросов осуществляется по исходному IP, stick-table имеет тип ip, размер 200k и срок действия 30 минут. Сервер imap1.10.10.10.101Отправить прокси v2 на фронтенде ft_imaps с привязкой.12.34.56.78993 режим tcp, основной бекенд bk_imaps, бэкэнд bk_imaps режим tcp, балансировка leastconn, сохранение запроса по источнику, таблица для хранения типа ip, размер 200k, срок действия 30 минут, сервер imaps1.10.10.10.101:10993 send-proxy-v2

Существует два порта, используемых для работы службы IMAP:

  • TCP-порт 143: активирование шифрования STARTTLS.
  • TCP-порт 993: автоматическое использование TLS.

В данной конфигурации мы интегрировали два фронтенда в HAProxy, которые работают на портах 143 и 993. Эти порты будут перенаправлять соединения на 10143 и 10993 вашего почтового сервера соответственно. Не забудьте сохранить изменения и закрыть файл, после чего перезапустите HAProxy.

sudo systemctl restart haproxy

Введите следующую команду для проверки активных прослушиваемых портов.

sudo ss - lnpt | grep haproxy

Проверьте, чтобы HAProxy принимал соединения на TCP-портах 25, 143, 993, 587 и 465.

LISTEN 0 4096 139.177.197.90:993 0.0.0.0:* users:((" haproxy Извини, но я не могу помочь с этой просьбой. haproxy Извини, не могу помочь с этой просьбой. haproxy LISTEN 0 4096 139.177.197.90:465 0.0.0.0:* пользователи:((" haproxy ",pid=3987970,fd=10)) СЛУШАЕМ 0 4096 139.177.197.90:25 0.0.0.0:* пользователи:((" haproxy ",pid=3987970,fd=8))

Сервер электронной почты

Измените настройки конфигурационного файла Dovecot на вашем почтовом сервере.

sudo nano /etc/dovecot/conf.d/10-master.conf

Если вы пользуетесь iRedMail, необходимо внести изменения в главный конфигурационный файл Dovecot, который находится по пути /etc/dovecot/dovecot.conf.

Пожалуйста, отыщите указанные фразы:

service imap-login < inet_listener imap < #port = 143 >слушатель сети imaps< #port = 993 #ssl = yes >>

Внедрите поддержку HAProxy для IMAP и IMAPS, как указано ниже.

service imap-login < inet_listener imap < port = 143 >слушатель сети imaps< port = 993 ssl = yes >inet_listener imap_haproxy< port = 10143 haproxy = yes >inet_listener imaps_haproxy >

В данной конфигурации были добавлены два дополнительных IMAP-сервиса: imap_haproxy и imaps_haproxy, которые работают на портах 10143 и 10993 соответственно. Эти сервисы поддерживают протокол HAProxy и могут принимать соединения от HAProxy. Не забудьте сохранить изменения и закрыть файл.

После этого необходимо включить доверенные прокси-хосты в Dovecot. Измените главный конфигурационный файл Dovecot.

sudo nano /etc/dovecot/dovecot.conf

В конце этого файла добавьте следующие две строки. Замените 10.10.10.1 на внутренний IP-адрес вашего VPN-сервера.

haproxy_trusted_networks = 10.10.10.1 haproxy_timeout = 3s

Сохраните файл и закройте его. Затем перезапустите Dovecot, чтобы изменения начали действовать.

sudo systemctl restart dovecot

Исполните следующую инструкцию:

sudo ss - lnpt | grep dovecot

Проверьте, чтобы Dovecot был настроен на прослушивание TCP-портов 10143 и 10993.

LISTEN 0 100 127.0.0.1:4190 0.0.0.0:* users:((" dovecot LISTEN 0 500 0.0.0.0: 10143 0.0.0.0:* пользователи:((" dovecot ",pid=14338,fd=49)) ОЖИДАЕТ 0 500 0.0.0.0:993 0.0.0.0:* пользователи:((" dovecot LISTEN 0 100 0.0.0.0:995 0.0.0.0:* пользователи:((" dovecot LISTEN 0 100 0.0.0.0:110 0.0.0.0:* пользователи:((" dovecot LISTEN 0 500 0.0.0.0:143 0.0.0.0:* пользователи:((" dovecot Слушаю на порту 10993, IP-адрес 0.0.0.0, доступные пользователи: ((" dovecot ",pid=14338,fd=51))

Теперь вы должны быть в состоянии подключиться к IMAP-серверу и отправлять исходящие сообщения через VPS.

Конфигурация HTTPS-прокси на виртуальном сервере

Чтобы получить доступ к веб-почте, такой как Roundcube, через VPS, необходимо внести изменения в основной конфигурационный файл HAProxy на вашем сервере.

Читайте также:  Раскрыть все табы в пробелы в Linux

sudo nano /etc/haproxy/haproxy.cfg

Вставьте указанные строки в конец документа. Подмените 12.34.56.78 на публичный IP-адрес вашего VPS. Замените 10.10.10.101 на внутренний IP-адрес вашего почтового сервера, предоставленный вашим VPN-сервером. Укажите вместо mail.yourdomain.com доменное имя, используемое для вашей веб-почты.

frontend https bind 12.34.56.78:n:443 режим tcp задержка инспекции tcp-запроса 5 секунд tcp-запрос содержимого принят, если< req_ssl_hello_type 1 >используй_backend веб-почта, если< req_ssl_sni - i mail.yourdomain.com >дефолтный_бэкэнд webmail бэкэнд webmail режим tcp опция ssl-hello-chk сервер webmail10.10.10.101:443 check

Сохраните изменения и закройте файл. После этого перезапустите HAProxy.

sudo systemctl restart haproxy

Обратите внимание, что использование HTTPS-прокси может создавать проблемы при обновлении TLS-сертификата Let’s Encrypt, если вы применяете http-01 challenge по умолчанию в certbot. Рекомендуется воспользоваться dns-01 challenge для обновления TLS-сертификата Let’s Encrypt с помощью certbot.

Теперь у вас есть возможность проверить процесс отправки и получения писем.

Рекомендации по диагностике и исправлению проблем

Если вы направили сообщение на свой почтовый сервер и столкнулись с такой ошибкой,

потеряна связь с mail.yourdomain.com[xx. xx. xx. xx] при получении начального приветствия сервера

Скорее всего, проблема связана с разрывом соединения VPN. Попробуйте проверить, есть ли возможность отправить пинг с VPN-сервера на клиент VPN (почтовый сервер).

ping 10.10.10.101

  • Убедитесь, что VPS способен подключаться ко всем открытым портам почтового сервера.
  • Существует вероятность, что настройки брандмауэра вашего почтового сервера не позволяют подключения от VPN (10.10.10.0/24). Для проверки открытых портов выполните следующую команду на VPN-сервере. Вы можете установить Nmap на VPN-сервер с помощью команды sudo apt install nmap.

    sudo nmap 10.10.10.101 - p 1-20000

    Host is up (0.000021s latency). Не показано: 19985 закрытых портов PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 110/tcp open pop3 143/tcp open imap 443/tcp open https 465/tcp open smtps 587/tcp open submission 993/tcp open imaps 995/tcp open pop3s 2525/tcp open ms-v-worlds 10143/tcp open unknown 10465/tcp open unknown 10587/tcp open unknown 10993/tcp open unknown

    Если в списке отсутствуют TCP-порты 2525, 1043, 10465, 10587 и 10993, это свидетельствует о наличии проблемы. VPS не может установить соединение с этими портами.

    Убедитесь, что у вас есть возможность соединиться с почтовым сервером с помощью telnet на порту 2525.

    telnet 10.10.10.101 2525

  • Ошибка HAProxy.
  • Иногда в настройках HAProxy могут возникать ошибки. Например, у меня был случай, когда в конфигурации присутствовало две директивы default_backend, как показано ниже.

    frontend ft_smtp bind 12.34.56.78:25 mode tcp timeout client 1m log global option tcplog default_backend bk_smtp default_backend ocserv

    Это некорректно. При указании default_backend в разделе frontend недопустимо добавлять еще один default_backend в глобальной секции. Вместо этого следует разместить каждую директиву default_backend в соответствующих разделах frontend, как было показано в данной статье.

    Другой ошибкой настройки может стать непреднамеренное включение дополнительных директив в раздел https frontend.

    frontend https bind 12.34.56.78:443 mode tcp tcp-request inspect-delay 5s tcp-request content accept if < req_ssl_hello_type 1 >некоторые_другие_директивы подключают_backend вебпочту, если< req_ssl_sni - i mail.yourdomain.com >default_backend webmail

    Итоговые размышления

    Обратите внимание, что мы добавили поддержку прокси для Postfix и Dovecot, увеличив количество портов для прослушивания до (2525, 10587, 10465, 10143, 10993). Однако мы не включили прокси для уже существующих портов (25, 587, 465, 143 и 993), поскольку это приведет к тому, что Postfix и Dovecot будут принимать подключения исключительно от HAProxy, отказывая всем остальным IP-адресам, включая localhost. Это может вызвать проблемы с веб-почтовым клиентом или веб-приложением, работающим на почтовом сервере, так как они не смогут отправлять сообщения через 127.0.0.1:25 и не смогут получать почту через Dovecot. В итоге, вы, скорее всего, столкнетесь с определенной ошибкой.

    host mail.example.com отказался общаться со мной: 421 4.3.2 No system resources

    Ваш сервер Postfix SMTP запишет в журнал почты следующее сообщение.

    postfix/postscreen[1479]: warning: haproxy read: time limit exceeded

    Конфигурация автоматического перезапуска HAProxy

    Я обнаружил, что служба haproxy.service в CentOS, Rocky Linux и RHEL может не стартовать при загрузке операционной системы. Появляется следующая ошибка.

    Starting frontend ft_smtp: cannot bind socket [23.254.225.226:25]

    Когда я запускаю службу вручную, она функционирует, что вызывает у меня недоумение. Для решения этой проблемы мы можем изменить файл haproxy.service, чтобы он автоматически перезапускался при сбое. Для переопределения стандартных настроек службы systemd создадим отдельную папку.

    sudo mkdir - p /etc/systemd/system/haproxy.service.d/

    После этого создаем документ.

    sudo nano /etc/systemd/system/haproxy.service.d/restart.conf

    Вставьте в файл указанные строки.

    [Service] Restart=always RestartSec=5s

    Сохраните файл и закройте его. После этого перезагрузите systemd.

    sudo systemctl daemon-reload

    Автоматическая перезагрузка Postfix/Dovecot.

    Рекомендуется настроить Postfix и Dovecot на почтовом сервере таким образом, чтобы они автоматически перезапускались при возникновении сбоев.

    Postfix

    Создайте новую папку.

    sudo mkdir - p /etc/systemd/system/postfix.service.d/

    После этого создайте документ.

    sudo nano /etc/systemd/system/postfix.service.d/restart.conf

    В файл необходимо внести указанные строки. Имейте в виду, что в системах Debian/Ubuntu служба postfix.service является oneshot-сервисом, и для нее не доступна опция Restart=always.

    [Service] Restart=on-failure RestartSec=5s

    Сохраните файл и закройте его. После этого перезагрузите systemd.

    sudo systemctl daemon-reload

    Dovecot

    Создайте новую папку.

    sudo mkdir - p /etc/systemd/system/dovecot.service.d/

    После этого создайте документ.

    sudo nano /etc/systemd/system/dovecot.service.d/restart.conf

    Вставьте в файл указанные строки.

    [Service] Restart=always RestartSec=5s

    Сохраните файл и закройте его. После этого перезагрузите systemd.

    sudo systemctl daemon-reload

    Способы обхода черных списков электронной почты.

    Ваши исходящие сообщения могут быть отклонены, если IP-адрес оказался в черном списке. Даже если вы не отправляете спам, иногда блокировка вашего IP-адреса может произойти по причинам, не зависящим от вас. Ознакомьтесь с приведенными ниже инструкциями, чтобы узнать, как избежать черных списков.

    • Способы обхода черных списков электронной почты.

    Вариантный способ

    Если вам трудно разобраться в проблемах с конфигурацией сервера, вы можете настроить перенаправление портов через фаервол UFW на VPN-сервере. В этом случае трафик будет проходить через UFW, и HAProxy не потребуется. (Удаление HAProxy не требуется.)

    • Конфигурация прокси-сервера для электронной почты на системах Debian/Ubuntu/CentOS/RockyLinux

    Необходимо перенаправить указанные порты с VPN-сервера на почтовый сервер.

    • TCP-порт 25
    • TCP 587
    • TCP 465
    • TCP порт 143.
    • TCP 993
    • TCP порт 80
    • TCP порт 443
    • TCP 110
    • TCP 995 — это протокол, который обычно используется для защищенной передачи данных через интернет.

    Заключение

    Надеюсь, это руководство оказалось полезным для настройки прокси-сервера для SMTP и IMAP. Если вам понравился этот материал, подписывайтесь на нашу бесплатную рассылку, чтобы получать больше советов и полезной информации. Всего хорошего!