LINUX.ORG.RU
решено ФорумAdmin

Не подключается к SMTP iRedMail вышестоящий Ubuntu

 , , ,


0

1

Ребята привет!

Стоит Ubuntu с nginx, который проксирует на почтовик iRedMail, есть такой конфиг:

server {

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/mail.domain.ru/fullchain.pem; 
ssl_certificate_key /etc/letsencrypt/live/mail.domain.ru/privkey.pem; 
include /etc/letsencrypt/options-ssl-nginx.conf; 
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

if ($host = www.mail.domain.ru) {
    return 301 https://mail.domain.ru$request_uri;
} 

server_name mail.domain.ru www.mail.domain.ru;
	
    location / {
        
       
		proxy_pass https://192.168.1.85;
		proxy_set_header   Host             $host;
		proxy_set_header   X-Real-IP        $remote_addr;
		proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
		proxy_set_header   X-Real-Pcol http;
    
	}

}

server { if ($host = www.mail.domain.ru) { return 301 https://mail.domain.ru$request_uri; }

if ($host = mail.domain.ru) {
    return 301 https://mail.domain.ru$request_uri;
} 
listen 80;
server_name mail.domain.ru www.mail.domain.ru;

return 404;

}

Все работает, вопросов нет. Но с сайтов, которые расположены на другом сервере с Ubuntu невозможно отправить почту по SMTP. Тупо не удается подключиться к SMTP серверу. Пример - https://www.nginx.com/resources/wiki/start/topics/examples/imapauthenticatewithapachephpscript/ я видел, но из него не понял, зачем им руководствоваться, если 2 сервера в одной сети находятся. Кстати, почта по SMTP (например через mail.ru) успешно отправляется. Вопрос только с локальным SMTP. При этом все локальные пользователи с почтовыми клиентами тоже успешно могут отправлять и получать почту. Как думаете, где может быть проблема? Спасибо!

*задумчиво глядит на конфиг nginx*

Причем тут вообще он?

У вас две директивы:

listen 443
listen 80

Дальше можно даже не смотреть - это порты http и https, проксируете вы только web интерфейс.

Почта передается через протокол smtp, это порты 25 / 465 (если ssl)

Или вы настраиваете свой nginx для проксирования smtp,
https://docs.nginx.com/nginx/admin-guide/mail-proxy/mail-proxy/

или вы пробрасываете порты smtp на свой 192.168.1.85 с помощью iptables

zgen ★★★★★ ()
Последнее исправление: zgen (всего исправлений: 1)
Ответ на: комментарий от zgen

А почему тогда через почтовые клиенты все прекрасно работает, а CMS (joomla, wordpress) не могут отправить сообщения?

Появляется ошибка - невозможно подключиться к SMTP серверу. Firewall на двух серваках выключен вообще, т.к. они уже находятся за firewall на третьем.

alvian ()
Ответ на: комментарий от alvian

Вам уже ответили, пробрасывайте почтовые порты.

А по вашему вопросу: скорее всего почтовыми клиентами подключаетесь на белый ip/

публичный домен. Либо же на том сервере куда подключаетесь порты уже проброшены.

Гадать тут можно долго)

Нарисуйте схему сети, потом получите определённый ответ.

Twissel ★★★★★ ()
Последнее исправление: Twissel (всего исправлений: 2)
Ответ на: комментарий от Twissel

Проблема была в том, что на вышестоящем nginx были получены сертификаты на сайт. А на нижестоящем, на котором почтовик не были прописаны пути до сертификатов (на него отдельно выпустил). Теперь все работает. А порты почтовые мне не нужно пробрасывать, т.к. это все в одной LAN. А из WAN порты проброшены.

alvian ()
Ответ на: комментарий от alvian

А можете пояснить схему? Я хочу заставить nginx проксировать SSL и TLS почтовый трафик. Т.е. есть почтовый сервер (backend), на нем IMAP и SMTP. С помощью сервера nginx проксирую почтовый трафик. Почтовым клиентом к nginx-то я подключаюсь по ssl, но сам nginx к backend-у (настоящему почтовому серверу) по 993 не подключается, соединение виснет и по таймауту отваливается.

Другими словами, если на backend есть возможность незащищенного коннекта на 143 (imap), то nginx проксирует почту от клиента на него. Если я заставляю nginx работать с 993 портом бекенда, ничего не работает.

Это нормально или весь трафик между «клиентом и nginx», «nginx и backend» может быть ssl?

billybons2006 ()
Ответ на: комментарий от billybons2006

Я настроил конфиг на фронте так:

server {
		
	listen 443 ssl;
	
    ssl_certificate /etc/letsencrypt/live/mail.domain.ru/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/mail.domain.ru/privkey.pem; 
    include /etc/letsencrypt/options-ssl-nginx.conf; 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
	
	if ($host = www.mail.domain.ru) {
        return 301 https://mail.domain.ru$request_uri;
    } 
	
	server_name mail.domain.ru www.mail.domain.ru;
		
        location / {
            proxy_set_header   Host             $host;
			proxy_set_header   X-Real-IP        $remote_addr;
			proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto  $scheme;
			proxy_pass https://10.8.0.10/;
		}
}

Certbot и на фронте и на бэке получает сертификаты. На фронте для веб-интерфейса, а на беке для STARTTLS (IMAP, SMTP). Меня смущает proxy_pass https://10.8.0.10/ но если проксировать на proxy_pass http://10.8.0.10/ то не идет траффик.

alvian ()