내 Linux 호스트에서 이메일을 보낼 수 없습니다. 내가 시도한 명령은 다음과 같습니다.
echo "This is the message body and contains the message" | sudo mailx -v [email protected] -s "This is the subject"
또는
mail -s "Test Subject" [email protected] < /home/system/mailbody.txt
산출:
Mail Delivery Status Report will be mailed to <root>.
실행중인 프로세스입니다.
$ ps -ef | grep postfix
postfix 2993 30866 0 19:15 ? 00:00:00 pickup -l -t unix -u
system 4399 594 0 19:28 pts/0 00:00:00 grep --color=auto postfix
root 30866 1 0 2020 ? 00:00:19 /usr/libexec/postfix/master -w
postfix 30868 30866 0 2020 ? 00:00:05 qmgr -l -t unix -u
다음은 포트 25가 내 시스템을 수신하고 있음을 보여주는 텔넷입니다.
$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 efendibey_live.localdomain ESMTP Postfix
출력은 다음과 같습니다 mailq
.
$ mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
AE3BF1FC5 606 Sun Feb 7 19:15:10 system@efendibey_live.localdomain
(connect to mx2.zoho.com[136.143.191.44]:25: Connection timed out)
[email protected]
7410B47CA 602 Sun Feb 7 19:18:57 system@efendibey_live.localdomain
(delivery temporarily suspended: connect to alt2.gmail-smtp-in.l.google.com[2404:6800:4003:c06::1a]:25: Network is unreachable)
[email protected]
3EC5F1EC2 474 Sun Feb 7 19:13:34 system@efendibey_live.localdomain
(connect to mx2.zoho.com[136.143.191.44]:25: Connection timed out)
[email protected]
456251FC6 656 Sun Feb 7 19:18:04 system@efendibey_live.localdomain
(connect to mx2.zoho.com[136.143.191.44]:25: Connection timed out)
[email protected]
1CB9D48FB 652 Sun Feb 7 19:20:04 system@efendibey_live.localdomain
(connect to alt2.gmail-smtp-in.l.google.com[2404:6800:4003:c06::1a]:25: Network is unreachable)
[email protected]
1FE9B450F 652 Sun Feb 7 19:19:45 system@efendibey_live.localdomain
(connect to alt2.gmail-smtp-in.l.google.com[2404:6800:4003:c06::1a]:25: Network is unreachable)
[email protected]
B180025B5 654 Sun Feb 7 19:25:25 root@efendibey_live.localdomain
(delivery temporarily suspended: connect to alt2.gmail-smtp-in.l.google.com[2404:6800:4003:c06::1a]:25: Network is unreachable)
[email protected]
고쳐 쓰다:
아웃바운드 포트도 열려 있고 연결되어 있습니다.
$ telnet gmail-smtp-in.l.google.com 25
Trying 108.177.119.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP g24si11485107edh.82 - gsmtp
이메일을 보내는 명령을 실행하면 거기서 이메일을 볼 수 mailQ
있고 대기열에서 사라지지만 받은 편지함에는 여전히 메시지가 표시되지 않습니다.
[system@efendibey_live ~]$ echo "This is the message body and contains the message" | sudo mailx -v [email protected] -s "This is the subject"
Mail Delivery Status Report will be mailed to <root>.
[system@live ~]$ mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
3723C16BC* 658 Mon Feb 8 13:37:13 root@ebey_live.localdomain
[email protected]
-- 1 Kbytes in 1 Request.
[system@live ~]$ mailq
Mail queue is empty
[system@live ~]$
tail -f /var/log/maillog
다음은 단일 메일 전송 명령의 출력입니다.
Feb 8 15:29:43 Efendibey_Live postfix/pickup[10591]: E4F5F16A9: uid=0 from=<root>
Feb 8 15:29:43 Efendibey_Live postfix/cleanup[18223]: E4F5F16A9: message-id=<20210208152943.E4F5F16A9@efendibey_live.localdomain>
Feb 8 15:29:43 Efendibey_Live postfix/qmgr[1193]: E4F5F16A9: from=<root@efendibey_live.localdomain>, size=467, nrcpt=1 (queue active)
Feb 8 15:29:45 Efendibey_Live postfix/smtp[18225]: E4F5F16A9: to=<[email protected]>, relay=mx.zoho.com[136.143.191.44]:25, delay=1.2, delays=0.03/0.01/0.67/0.51, dsn=5.7.1, status=bounced (host mx.zoho.com[136.143.191.44] said: 541 5.7.1 Mail rejected due to antispam policy (in reply to RCPT TO command))
Feb 8 15:29:45 Efendibey_Live postfix/cleanup[18223]: 468D216BC: message-id=<20210208152945.468D216BC@efendibey_live.localdomain>
Feb 8 15:29:45 Efendibey_Live postfix/qmgr[1193]: 468D216BC: from=<>, size=2472, nrcpt=1 (queue active)
Feb 8 15:29:45 Efendibey_Live postfix/bounce[18227]: E4F5F16A9: sender non-delivery notification: 468D216BC
Feb 8 15:29:45 Efendibey_Live postfix/qmgr[1193]: E4F5F16A9: removed
Feb 8 15:29:45 Efendibey_Live postfix/local[18228]: 468D216BC: to=<root@efendibey_live.localdomain>, relay=local, delay=0.02, delays=0.01/0.01/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Feb 8 15:29:45 Efendibey_Live postfix/qmgr[1193]: 468D216BC: removed
해당 옵션을 시도해 보았지만 여전히 이메일을 받지 못했습니다.-f [email protected]
mailx
이것은 내 /etc/hosts
항목 입니다
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 guest
::1 guest
127.0.0.1 Efendibey_Live
::1 Efendibey_Live
Linux 호스트로부터 이메일을 받는 방법을 제안해 주시겠습니까?
답변1
이 답변에 대한 크레딧은 다음과 같습니다.리눅스 아기최근에 같은 문제가 생겼을 때 사용했습니다.
메일 서버에서 다음 명령을 실행하여 포트 25(아웃바운드)가 차단되었는지 확인하세요.
telnet gmail-smtp-in.l.google.com 25
차단되지 않은 경우, 연결이 성공적으로 이루어졌음을 나타내는 아래와 같은 메시지가 표시됩니다. (팁: quit
연결을 닫으려면 Enter를 누르고 Enter를 누르세요.)
Trying 74.125.68.26...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp
포트 25(아웃바운드)가 차단되면 다음과 유사한 내용이 표시됩니다.
Trying 2607:f8b0:400e:c06::1a...
Trying 74.125.195.27...
telnet: Unable to connect to remote host: Connection timed out
이 상황에서는 Postfix가 다른 SMTP 서버로 이메일을 보낼 수 없습니다. ISP/호스팅 공급자에게 아웃바운드 포트 25를 열어달라고 요청하세요. 그들이 귀하의 요청을 거부하는 경우 귀하는 다음을 수행해야 합니다.포트 25 차단을 우회하도록 SMTP 릴레이 설정또는 VPS를 사용하십시오.스칼라 호스팅이는 포트 25를 차단하지 않습니다.
"차단을 우회하기 위해 포트 25를 다른 포트로 변경할 수 있나요?"라고 질문하시는 분들도 계실 것입니다. 내 대답은 아니오 야. 포트 변경은 서버 측과 클라이언트 측을 모두 제어하는 경우에만 작동합니다. Postfix가 이메일을 보낼 때 SMTP 클라이언트 역할을 합니다. 수신자의 메일 서버는 SMTP 서버 역할을 합니다.수신 SMTP 서버를 제어할 수 없습니다.. SMTP 서버는 이메일을 수신하기 위해 포트 25를 수신하고 있습니다. 그들은 SMTP 클라이언트가 포트 25에 액세스할 것으로 예상합니다. 이메일 수신에 사용할 수 있는 다른 포트가 없습니다. Postfix가 수신 SMTP 서버의 포트 25에 연결되어 있지 않으면 이메일을 보낼 수 없습니다.
답변2
업데이트에는 /var/log/mail.log
포함된 내용이 표시되었습니다.
Feb 8 15:29:43 Efendibey_Live postfix/qmgr[1193]: E4F5F16A9:
from=<root@efendibey_live.localdomain>, size=467, nrcpt=1 (queue active)
Feb 8 15:29:45 Efendibey_Live postfix/smtp[18225]: E4F5F16A9:
to=<[email protected]>,
relay=mx.zoho.com[136.143.191.44]:25,
delay=1.2, delays=0.03/0.01/0.67/0.51, dsn=5.7.1,
status=bounced (host mx.zoho.com[136.143.191.44] said:
541 5.7.1 Mail rejected due to antispam policy (in reply to RCPT TO command))
이는 메시지가 성공적으로 전송되었지만 수신자가 거부했음을 의미합니다. 마찬가지로 흥미로운 것은 from=
주소입니다. 귀하의 도메인 이름은 입니다 efendibey_live.localdomain
. 수신자가 귀하의 도메인에 대한 DNS 조회를 수행할 수 없는 경우 일반적으로 귀하의 이메일을 거부합니다.
구성되면 postfix
출력을 사용하여 hostname -f
모든 것을 설정합니다. 이는 컴퓨터 이름과 컴퓨터의 DNS 항목에 따라 결정됩니다. 해결책은 /etc/postfix/main.cf
.
내 물건은 다음과 같습니다
$ hostname -f
mail.example.com
$ cat /etc/hostname
mail.example.com
$ host -t mx example.com
example.com is handled by 10 MAIL.example.com
$ host -t a mail.example.com
mail.example.com has address aa.bb.cc.dd
$ cat /etc/postfix/main.cf | grep myhostname
smtpd_banner = $myhostname ESMTP $mail_name
myhostname = example.com
mydestination = $myhostname, example.com, mail.example.com, localhost.example.com, localhost