CentOS 7 웹 서버에는 postfix, dovecot 및 mailx가 설치되어 있습니다. 원격 Thunderbird 클라이언트를 사용하여 받은 편지함 메일을 읽기 위해 서버에 대한 IMAP 연결을 설정할 수 있었지만 Thunderbird에서 이메일을 보내기 위한 SMTP 연결을 설정할 수 없습니다. 포렌식을 수행했을 때 시도한 SMTP 연결 시간이 초과되었음을 발견했습니다. Thunderbird에서 서버를 통해 이메일을 보낼 수 있도록 연결 시간 초과를 어떻게 해결합니까?
지금까지 내 포렌식 결과는 다음과 같습니다.
hostname
서버 터미널에 입력하면 가 반환됩니다 mydomain.com
.
nano /usr/lib/firewalld/services/smtp.xml
smtp 포트가 25임을 나타냅니다.
공용 영역에서 smtp 서비스를 활성화하면 다음과 같은 결과가 발생합니다 firewall-cmd --list-all
.
public (default, active)
interfaces: enp3s0
sources:
services: dhcpv6-client imaps openvpn smtp
ports:
masquerade: yes
forward-ports:
icmp-blocks:
rich rules:
하지만 내 devbox에서 원격 CentOS 7 서버로 텔넷을 시도하면 다음과 같은 결과가 나타납니다. 입력 결과는 telnet mydomain.com 25
다음과 같습니다.
Trying my.SERVER.ip.addr...
telnet: connect to address my.SERVER.ip.addr: Connection timed out
그런 다음 telnet smtp.mydomain.com 25
결과를 입력합니다.
Trying my.SERVER.ip.addr...
telnet: connect to address my.SERVER.ip.addr: Connection timed out
또한 입력 openssl s_client -CApath /etc/ssl/certs -starttls smtp -port 25 -host smtp.mydomain.com
결과는 다음과 같습니다.
socket: Connection timed out
connect:errno=110
마찬가지로 입력하면 다음과 같은 openssl s_client -CApath /etc/ssl/certs -starttls smtp -port 25 -host mydomain.com
결과가 나옵니다.
socket: Connection timed out
connect:errno=110
구성 확인 시작을 입력했지만 nano /etc/postfix/main.cf
포트와 관련된 항목을 찾지 못했습니다.
편집하다:
FaheemMitha님의 제안에 따라 telnet mydomain.com 587
고객과 함께 시도해 보았는데 No route to host
좋은 반응을 얻었습니다. 이는 방화벽에서 smtp용으로 포트 25만 열려 있기 때문인 것 같습니다.
그래서 원격 서버 mydomain.com 내에서 텔넷을 시도하고 싶습니다. SSH를 통해 원격 서버에 로그인하고 이것을 입력하면 telnet localhost 25
결과는 다음과 같습니다.
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mydomain.com ESMTP Postfix
이로 인해 postfix가 포트 25에서 실행되고 있지만 어떻게든 외부 연결을 허용할 수 없는 것으로 의심됩니다.
편집 #2
@RedCricket의 조언에 따라 iptables -L
. 결과가 길어지므로파일 공유 사이트에 올렸는데 이 링크를 클릭하시면 보실 수 있습니다.
iptables --flush
또한 후자를 시도한 firewall-cmd --reload
다음 위의 텔넷 및 썬더버드 테스트를 반복했지만 여전히 연결 시간 초과 오류가 발생합니다.
또 무엇을 시도할 수 있나요?
전체 파일을 /etc/postfix/main.cf
파일 공유 사이트에 올렸습니다. 당신은 할 수읽으려면 이 링크를 클릭하세요.
편집 #3
유효한 이메일 주소 some.else@some_other_domain.com 이메일 보내기[이메일 보호됨]괜찮아요. 그래서 테스트로 원격 Thunderbird 클라이언트가 이 OP에서 위에서 설명한 작업의 일부로 some.else@some_other_domain.com으로 이메일을 보내도록 했습니다. 오늘 아침에 Thunderbird에서 테스트 이메일에 대한 반송 메시지를 받았습니다. 이 반환 메시지는 Thunderbird에서 보낸 하나 이상의 테스트 메시지가 mydomain.com의 SMTP로 들어왔지만 mydomain.com이 some_other_domain.com을 찾거나 연결할 수 없다는 의미로 해석됩니다. 메시지는 다음과 같습니다.
This is the mail system at host mydomain.com.
I'm sorry to have to someone.elserm you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<someone.else@some_other_domain.com>: Host or domain name not found. Name service error for
name=some_other_domain.com type=MX: Host not found, try again
Reporting-MTA: dns; mydomain.com
X-Postfix-Queue-ID: 2C915811BD1C
X-Postfix-Sender: rfc822; [email protected]
Arrival-Date: Mon, 23 Feb 2015 16:46:34 -0500 (EST)
Final-Recipient: rfc822; someone.else@some_other_domain.com
Action: failed
Status: 4.4.3
Diagnostic-Code: X-Postfix; Host or domain name not found. Name service error
for name=some_other_domain.com type=MX: Host not found, try again
ForwardedMessage.eml
Subject: key enclosed
From: [email protected]
Date: 02/23/2015 01:46 PM
To: someone.else@some_other_domain.com
this is the body of the email
따라서 원격 devbox에서 mydomain.com으로의 연결이 끊어지는 경우도 있고, mydomain.com에서 나머지 인터넷으로의 연결도 끊어지는 경우가 있습니다.
편집 #4
@derobert의 제안에 따라 먼저 devbox에서 서버로 두 개의 텔넷 명령을 시도한 다음[이메일 보호됨]내 devbox에서 Thunderbird 클라이언트를 사용하고 devbox와 서버 모두에서 tcpdump 명령을 실행하세요. devbox 터미널의 입력 결과 tcpdump port 25
는 다음과 같습니다.
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
tun0에서 수신 중, 링크 유형 RAW(원시 IP), 캡처 크기 65535바이트^C 캡처된 0개 패킷 필터 수신된 0개 패킷 커널이 0개 패킷 삭제
다음으로 tcpdump
서버에 입력하면 많은 출력이 생성되고 Ctrl-C를 입력할 때까지 결과가 끝없이 스크롤됩니다. 그래서 입력을 tcpdump port 25
해보니 아래와 같은 결과가 나왔습니다.
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel
호기심에 나는 tcpdump port 25
devbox와 서버 모두에 다시 입력하고 입력하지 않고 열어 둔 다음 Ctrl-C
다음에서 수동으로 입력을 시도했습니다.[이메일 보호됨]내 개발 상자에서 Thunderbird 클라이언트를 사용합니다. 여전히 동일한 연결 시간 초과 오류가 발생하지만 open 명령은 활동 없음을 보고합니다 tcpdump port 25
. 이후에 두 터미널 모두에 입력 하면 Ctrl-C
합계도 0입니다.
답변1
뒤쪽에많은 문제 해결, 클라이언트의 ISP가 나가는 포트 25(SMTP)를 차단한 것으로 확인되었습니다. 이는 인터넷의 임의 메일 서버로 사이트를 테스트한 결과 메일 서버에 제대로 연결될 수 있다는 사실을 확인하여 확인되었습니다. 클라이언트 컴퓨터의 SMTP 패킷이 전혀 도착하지 않습니다(승인을 통해 tcpdump
).
해결 방법은 다른 포트에서 SMTP 수신기를 재구성하는 것입니다. 465(SSL을 통한 SMTP) 및 587(메일 제출, RFC6409)은 일반적인 옵션입니다.