SMTP를 통해 메일 서버에 접근할 수 없습니다

SMTP를 통해 메일 서버에 접근할 수 없습니다

서버에서 이메일을 보내려고 합니다. 내 로컬 컴퓨터에서는 테스트가 제대로 작동하지만 프로덕션 Ubuntu 서버에서는 이메일을 보내려고 할 때 웹 서버가 실패합니다.

저는 Gmail을 SMTP 공급자로 사용하고 있는데 문제는 프로덕션 서버가 Google SMTP 서버에 대한 액세스를 허용하지 않는 것 같습니다.

다음 명령은 내 컴퓨터에서는 성공적인 연결을 설정하지만 서버에서는 실패합니다.

$ openssl s_client -crlf -connect smtp.gmail.com:465
connect: Connection refused
connect:errno=111

iptables포트가 닫힐 경우를 대비해 다양한 조합을 시도해봤습니다 . 또한 비활성화된 방화벽을 사용해 보았습니다 ufw disable. 둘 다 나에게 성공을 가져다주지 못했습니다.

고쳐 쓰다:

telnet smtp.gmail.com 465산출:

Trying 74.125.143.108...
Trying 74.125.143.109...
Trying 2a00:1450:4010:c04::6c...
telnet: Unable to connect to remote host: Network is unreachable

openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:465나에게주세요:

connect: Connection refused
connect:errno=111

추가로 iptables-save출력:

# Generated by iptables-save v1.4.12 on Thu Aug 21 13:06:19 2014
*mangle
:PREROUTING ACCEPT [16698:11267219]
:INPUT ACCEPT [16698:11267219]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [13015:16282858]
:POSTROUTING ACCEPT [13015:16282858]
COMMIT
# Completed on Thu Aug 21 13:06:19 2014
# Generated by iptables-save v1.4.12 on Thu Aug 21 13:06:19 2014
*nat
:PREROUTING ACCEPT [1421:163021]
:INPUT ACCEPT [678:92411]
:OUTPUT ACCEPT [1339:83461]
:POSTROUTING ACCEPT [1339:83461]
COMMIT
# Completed on Thu Aug 21 13:06:19 2014
# Generated by iptables-save v1.4.12 on Thu Aug 21 13:06:19 2014
*filter
:INPUT ACCEPT [9933:3116585]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [12536:16243622]
-A INPUT -i lo -j ACCEPT
COMMIT
# Completed on Thu Aug 21 13:06:19 2014

답변1

IIRC, openssl s_client -connect localhost는 기본적으로 TLS를 사용합니다.

~에서https://www.openssl.org/docs/apps/s_client.html:

-ssl2, -ssl3, -tls1, -no_ssl2, -no_ssl3, -no_tls1

이러한 옵션은 특정 SSL 또는 TLS 프로토콜을 비활성화합니다. 기본적으로 초기 핸드셰이크에 사용되는 방법은 모든 서버와 호환되어야 하며 SSL v3, SSL v2 또는 TLS를 적절하게 사용할 수 있도록 허용해야 합니다.

안타깝게도 이 기술을 처리할 수 없고 연결할 수 없는 오래되고 고장난 서버가 많이 사용되고 있습니다. 일부 서버는 -no_tls 옵션을 사용하여 TLS를 끄는 경우에만 작동하고, 다른 서버는 SSL v2만 지원하며 -ssl2 옵션이 필요할 수 있습니다.

다음 옵션 중 하나를 사용해야 할 수도 있습니다.

답변2

먼저 목적지까지의 기본 연결을 시도해 보세요.

telnet smtp.gmail.com 587

그래도 문제가 해결되지 않으면 방화벽 문제를 고려해 볼 수 있습니다.

TLS가 유효한지 확인하세요

openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587

첫 번째 방법은 작동하지만 TLS가 실패하는 경우 TLS 사용을 방지하는 심층 검사 방화벽을 사용하고 있을 수 있습니다(TLS 트래픽을 검사할 수 없기 때문).

나에게 귀하의 문제는 이메일 문제라기보다는 방화벽 문제처럼 보입니다.

그렇다면 보유하고 있는 방화벽과 해당 구성을 설명해야 합니다. 순전히 iptables인 경우(지금까지 설명이 가능해 보이는 경우) iptables-save.

편집하다

iptables 구성이 비어 있습니다. 어쨌든 기본값은 ACCEPT이므로 iptables를 안전하게 무시할 수 있으므로 한 가지 규칙은 관련이 없습니다.

TCP 연결(telnet smtp.gmail.com 465)도 설정할 수 없기 때문에 라우팅 등 다른 모든 것이 괜찮다고 가정하면 일부 방화벽에 의해 완전히 차단되었음을 의미합니다. 프로덕션 서버이기 때문에 제외해도 안전할 것 같습니다.

따라서 이제 포트 465에서 차단되므로 네트워크 팀과 논의하거나 외부 방화벽을 살펴봐야 합니다.

위의 예에서 포트 587을 확인하여 해당 포트도 차단되었는지 확인하세요. 이 경우 관련 설정된 포트 25만 허용하는 매우 엄격한 방화벽이 있을 수 있습니다.

사용자를 차단하는 모든 방화벽에서 허용되는 발신 포트에 465를 추가해야 합니다.

귀하의 환경은 모르지만 일부 높은 수준의 보안 환경에서는 네트워크 내 암호화를 허용하지 않고 방화벽에서 암호화를 시행합니다. 귀하도 이와 유사한 상황에 처해 있을 수 있습니다.

관련 정보